zoukankan      html  css  js  c++  java
  • 6.1学习笔记web组件之间是三种关联关系struts概述

    (转)Web组件之间存在三种关联关系: 

    请求转发 

    定义:请求转发允许把请求转发给同一个应用程序 中的其他WEB组件。

    实现:Servlet类使用javax.servlet.RequestDispathcer.forward()方法来转发它所收到的HTTP请求。转发目标组件将处理该请求并生成响应结果,或者将请求继续转发到另一个组件。最初请求的ServletRequest和ServletResponse对象被传递给转发目标组件,这是的目标组件可以访问整个请求上下文。

    总结:转发的源组件和目标组件在request范围内共享数据,及他们拥有同一个request对象啊。请求转发只能转发给同一个WEB应用中的组件。

    Java代码  收藏代码
    1. RequestDispatcher rd = request.getRequestDispatcher("hello.jsp");  
    2. rd.forward(request,response);  
    Html代码  收藏代码
    1. <jsp:forward page="hello.jsp">  

    URL重定向 :

    重定向类似于请求转发,但也有一些重要区别:

    1.Web组件可以将请求重定向到任一URL,而不仅仅是同一个应用中的URL。
    2.重定向的源组件和目标组件之间不共享同一个HttpServletRequest对象,及不能共享request范围内的数据 。

    3.转发的话URL地址栏值不会改变,重定向的话URL地址栏值会改变。

    Java代码  收藏代码
    1. response.sendRedirect("http://www.baidu.com");  

    建议:在同一个应用程序中还是使用转发,这样便于统计组统计网站的PV值时,转发的话程序不会产生的PV,重定向一次就会多产生一点PV值。 

    包含: 
    定义:包含关系允许一个WEB组件聚集来自同一个应用中其他WEB组件的输出数据,并使用被聚集的数据来创建相应结果。

    实现:javax.servlet.RequestDispathcer.include()方法包含其他的WEB组件。


    概念比较抽象,但实例一讲就觉得很简单,我们一直在用的,但我们没有留意这就是包含。

    Java代码 收藏代码
    1. RequestDispatcher rd ;  
    2. rd = req.getRequestDispatcher("/header.jsp");  
    3. rd.include(req,res);  
    4. rd = req.getRequestDispatcher("/main.jsp");  
    5. rd.include(req,res);  
    6. rd = req.getRequestDispatcher("/footer.jsp");  
    7. rd.include(req,res);  
    Html代码  收藏代码
    1. <%@ include file="header.jsp" %>  
    2. <%@ include file="main.jsp" %>  
    3. <%@ include file="footer.jsp" %>  

    Struts 概述:

    1.视图

        视图就是一组JSP文件。在这些JSP文件没有业务逻辑,也没有模型信息,只有标签,这些标签可以是标准的JSP标签或者客户化的标签,如Structs标签库中的标签。

        此外,通常把Structs框架中的ActionForm Bean也划分到视图模块中。ActionForm Bean也是一种Java Bean,除了具有一些JavaBean的常规方法,还包含一些特殊的方法,用于验证HTML表单数据以及将其属性重新设置成默认值。Structs框架把用户输入的表单数据保存在ActionForm Bean中,把它传递给控制器,控制器可以对ActionForm Bean中的数据进行修改,JSP文件使用Structs标签读取修改后的ActionForm Bean的信息,重新设置HTML表单。

    2.模型

        模型表示应用程序的状态和业务逻辑。对于大型应用,业务逻辑通常由JavaBean或EJB组件来实现。

    3.控制器

        控制器由ActionServlet类和Action类实现。ActionServlet类是Structs框架中的核心组件。ActionServlet继承了 javax.servlet.http.HttpServlet类,它在MVC模型中扮演控制器的角色,ActionServlet主要负责接受HTTP请求信息,根据配置文件structs-config.xml的配置信息,把请求转发给适当的Action对象,如果该Action对象不存在,ActionServlet会先创建这个Action对象。

        当ActionServlet控制器接受到用户请求之后,会把请求转发到一个Action实例,如果没有这个实例,控制器就会创建它先,然后调用这个Action实例的execute()方法。Action的execute()方法返回ActionForward对象,它封装了把用户请求再转发给其它Web组件的信息。用户定义自己的Action累,即Action基类的子类时,必须覆盖execute()方法。在Action基类中改方法返回NULL.

    4.Structs的配置文件structs-config.xml

        用户请求是通过ActionServlet来处理和转发的。那么,ActionServlet如何决定把用户请求转发给哪个Action对象呢?这就需要一些描述用户请求路径和Action映射关系的配置信息了。在Structs中,这些配置信息都储存在特定的xml文件structs-confid.xml中,在该配置文件中,每一个Action的映射信息都是通过一个<action>元素来配置。

  • 相关阅读:
    CREATE AGGREGATE
    技术文档列表
    jQuery 判断表单中多个 input text 中至少有一个不为空
    Java实现 蓝桥杯 算法提高 奥运会开幕式
    Java实现 蓝桥杯 算法提高 最长滑雪道
    Java实现 蓝桥杯 算法提高 最长滑雪道
    Java实现 蓝桥杯 算法提高 最长滑雪道
    Java实现 蓝桥杯 算法提高 最大值路径
    Java实现 蓝桥杯 算法提高 最大值路径
    Java实现 蓝桥杯 算法提高 最大值路径
  • 原文地址:https://www.cnblogs.com/zxpgo/p/2530394.html
Copyright © 2011-2022 走看看