`
flyingis
  • 浏览: 294826 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

重温Struts--ActionMapping和ActionForward

阅读更多

作者:Flyingis<o:p></o:p>

前段时间用Struts完成一个小项目,当时还没有来到blogjava,很多东西也没有记录。现在花一点时间,将整个Struts应用重新温习一遍,重新挖掘项目开发过程中没有注意到的知识点,并写下自己的一些心得与体会。<o:p></o:p>

ActionMapping<o:p></o:p>

ActionMapping将对Struts应用中有效的业务逻辑进行分类,当一个请求到达时,ActionSevletActionMapping目录中查找对应的信息。ActionMappingStruts应用的一个核心设计,当需要了解一个Struts应用,或编写一个新的Struts应用的时候,都应该从ActionMapping入手。ActionMapping有较多的属性信息,具体参考相关文档。<o:p></o:p>

ActionForward<o:p></o:p>

ActionForwardStruts的核心类之一,其基类仅有4个属性:name / path / redirect / classname。在基于StrutsWeb应用程序开发过程中,Action操作完毕后程序会通过Struts的配置文件struts-config.xml链接到指定的ActionForward,传到Struts的核心类ActionServletActionServlet使用ActionForward提供的路径,将控制传递给下一个步骤。ActionForward控制接下来程序的走向。ActionForward代表一个应用的URI,它包括路径和参数,例如:<o:p></o:p>

path=“/modify.do?method=edit&id=<st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="10" unitname="”">10”</st1:chmetcnv><o:p></o:p>

ActionForward的参数除了在struts-config.xml和页面中设置外,还可以通过在Action类中添加参数,或重新在Action中创建一个ActionForward<o:p></o:p>

ActionForward中有一个重要的属性redirect,当redirect=false时,将保存存储在http请求和请求上下文中的所有内容,仅在同一个应用中可用。当redirect=true时,Web客户端进行一次新的http请求,请求的资源可以在同一个应用中,也可以不在,原来的请求参数不再保存,原来的请求上下文也被清除,新的http请求仅包含ActionForwardpath属性里所包含的参数。如果在同一个应用中,用户会话的上下文会被维护。<o:p></o:p>

ActionForward分为全局转发和局部转发,ActionMapping对象的findForward方法首先会检查局部转发列表,查找失败就会到全局转发列表中查找。书写格式中,我们一般将全局变量定义为String常数,避免误解,使得转发列表结构清晰易读。<o:p></o:p>

在项目开发过程中经常碰到一种情况,当页面已经改变了,浏览器中的地址如/modify.do/modify.jsp却没有变化,当时没有考虑这么细,虽然存在疑问,但没有影响到程序功能的实现,因此忽略过去了,今天查找了一些资料才弄清楚。客户端浏览器显示的是浏览器最后被给定的URL,当URL被提交后,在某个组件返回一个响应给浏览器之前,Web应用可能已经转发请求多次,而这些过程都发生在服务器端,客户端浏览器并不知道有什么变化。当一个http响应被返回时,它并没有包含地址栏的值,所以浏览器仅仅显示其用来作为初始请求的地址。通过使用redirect可以改变浏览器地址的显示,因为这样可以向浏览器提交一个新的请求,但付出的代价是数据不能通过请求上下文传递到页面,这也是使用forwardredirect的差异之一。

 

分享到:
评论
2 楼 summer_liyong 2008-05-22  
1 楼 anlongstar 2008-03-26  
不错,多谢
大厦大厦大厦大厦大厦

相关推荐

    struts-1.3.8-all.zip

    2. **Action**:Action类是业务逻辑的载体,它接收来自控制器的请求,处理业务逻辑,并返回一个表示结果的ActionForward对象。 3. **ActionForm**:用于在Action和视图之间传递数据,它封装了用户输入的数据,并在...

    struts-config.xml

    除了上述元素,`struts-config.xml`还允许定义其他元素,如`&lt;action-forward&gt;`用于定义Action内部的转发,以及`&lt;message-resource&gt;`来配置应用程序的消息资源文件。 正确理解和配置`struts-config.xml`是开发Struts...

    struts-1.3.8-all.jar

    3. **Action**:Action 类是业务逻辑处理的主要部分,它接收来自 ActionForm 的数据,处理业务逻辑,并通过 ActionForward 指定视图的呈现。 4. **ActionMapping**:定义了 Action 与请求 URL 之间的映射关系,使得...

    struts-1.3.8-all&1.3.10

    Struts 1.x是Struts的第一个主要版本,它的核心组件包括ActionServlet、ActionForm、ActionMapping和Tiles等。以下是对这两个版本及其相关知识点的详细解释: 1. **ActionServlet**:这是Struts的核心控制器,它是...

    struts-1.2.9-bin 及 struts-1.2.9-src

    5. **ActionForward**:控制请求转发到不同的Action或JSP页面。 6. **ActionForm**:封装HTTP请求参数,进行数据验证和业务逻辑处理。 在使用Struts时,开发者需要编写Action类,这些类响应特定的HTTP请求,并与...

    struts-1.2.9-all-bin

    - **ActionForward**:用于控制请求转发,定义了Action执行后跳转的页面或Action。 - **Tiles**(可选):Struts的扩展,提供更灵活的页面布局和组合功能。 3. **配置文件** - **struts-config.xml**:Struts的...

    struts-core-1.3.10.jar.zip

    4. **ActionForward**:用于定义请求转发,可以将控制权转移到其他Action或者JSP页面。 5. **Action**:处理业务逻辑的核心类,每个Action对应一个特定的用户请求,完成特定的业务操作。 6. **Tiles**:Struts 1中...

    struts-menu例子

    - **动态生成**:Struts-menu可以根据应用程序的结构,如Action和ActionMapping,动态地构建菜单项。 - **多级菜单**:支持多层次的菜单结构,可以构建复杂的导航系统。 - **可配置性**:允许通过XML配置文件定义...

    struts-1.2.9-lib.zip

    - `struts-config.xml`是Struts的主配置文件,定义了Action、Form Beans、Forward、Plug-In等组件。 6. **动作映射与处理**: - Struts通过`ActionMapping`对象将HTTP请求映射到特定的Action类,Action类负责业务...

    Struts-menu例子加视频

    在学习Struts-menu时,除了观看视频和阅读文档,还应动手实践,创建自己的菜单结构,结合Action类处理用户请求,以及在JSP页面上展示菜单。这样不仅可以加深理解,还能提升解决问题的能力。同时,了解并掌握Struts的...

    jakarta-struts-1.2.4-src.zip_jakarta struts 1_jakarta struts-1.1

    3. **Action**:执行业务逻辑的Java类,通常会调用服务层(Service Layer)的方法处理请求,完成后通过ActionForward指定下一个视图。 4. **配置文件**:包括struts-config.xml和web.xml。前者定义了ActionMapping...

    struts-1.3.9-lib.zip

    - Action返回一个ActionForward对象,指示应该显示哪个结果页面(JSP)。 - Tiles或JSP渲染视图,展示给用户。 5. **标签库**: - Struts提供了丰富的标签库,如logic、bean、html等,简化了JSP页面的编写,降低...

    struts-1.2.9-src.zip

    3. Action:这是业务逻辑组件,处理由ActionServlet转发过来的请求,完成特定的业务操作,并返回一个表示下一步动作的ActionForward。 4. ActionMapping:定义了Action与请求URL之间的映射关系,以及ActionForm的...

    Struts-1.3.8

    7. **ActionForward**:ActionForward定义了请求处理后的转向路径,它可以指向另一个JSP页面、Action或者外部资源。 8. **RequestProcessor**:它是请求处理的第一步,负责初始化ActionServlet,以及处理请求前的...

    struts-1.2.9-bin.zip

    4. **ActionMapping**:定义了Action和请求URL之间的映射关系。 5. **Tiles**:一个可选的视图组件,允许构建可重用和模块化的页面布局。 6. **Struts-config.xml**:配置文件,定义了应用的配置信息,包括Action、...

    struts-1.2.9-all

    通过阅读源码,我们可以深入理解Struts的内部工作原理,包括ActionServlet、RequestProcessor、ActionForm、ActionMapping等关键类的实现,以及各种拦截器(Interceptor)的工作方式。 学习和使用“struts-1.2.9-...

    Struts-2.2.3.1-src.zip

    - **Action和ActionMapping**: Action是业务逻辑的载体,而ActionMapping则定义了Action与URL之间的映射关系。 - **拦截器(Interceptor)**: 拦截器是Struts 2的一个重要特性,它们按照预定义的顺序在Action执行...

    Struts-menu源码分析(转贴).rar

    Struts-config.xml定义了Action及其对应的ActionForm,而menu.xml描述了菜单结构和权限信息。理解这些配置文件的语法和作用对于使用和定制Struts-menu至关重要。 5. **请求处理流程**: 在分析源码时,要关注...

    struts-1.3.10-lib.rar

    struts-config.xml定义了ActionMapping、ActionForm和Action的配置,而web.xml则配置了ActionServlet和其他过滤器。 3. **视图技术**:Struts支持JSP作为视图层,通过使用JSP标签库(如struts-bean、struts-html、...

    struts-1.2.5-lib.zip

    开发者在使用Struts 1.2.5时,需要结合struts-config.xml配置文件来设置Action、ActionForm、ActionMapping等元素。同时,还需要在web.xml中配置ActionServlet。通过这些配置,Struts能够将用户请求映射到正确的...

Global site tag (gtag.js) - Google Analytics