Struts设置转向信息的时候,需要用到Forward。我们有四种不同的处理方式:
<!--方式一、 全局转向信息,所有Action公用 -->
<global-forwards>
<forward name="error" path="/mustLogin.jsp" />
</global-forwards>
<action-mappings>
<!--方式二、 直接转向,不牵扯到action,完全交给Struts控制-->
<action path="/showLoginWithForward" forward="/index.jsp" />
<!--方式三、 利用Struts提供的ForwardAction转向,转向信息放在parameter中 -->
<action path="/showLoginWithForwardAction" type="org.apache.struts.actions.ForwardAction"
parameter="/index.jsp" />
<!--方式四、forward作为action子元素完成转向 -->
<action path="/showLoginWithChildForward" type="com.jialin.struts.TestAction">
<forward name="success" path="/index.jsp"></forward>
</action>
</action-mappings>
这几种方式有什么区别?
1、方式一的forward的是全局共享的,所有Action都可以使用,而其余三种方式只有相应的action才能使用
2、方式二仅仅起到一个转向的作用,完全由struts控制,很方便,但是我们不方便加入自定义的操作,除非重写struts框架中的类的方法。
3、方法三和方法四,最大的区别在方式三不用我们自己写action了,它用的是Struts已经写好的action。需要注意的是,无论ActionForward还是我们自定义的action都是继承自Struts的核心类Action
那么,既然有自定义的action,为什么需要ForwardAction?
*目的是发出一个RequestDispatcher转发
*ForwardAction的绝大多数使用是作为Action的占位符
*ForwardAction创建一个请求分派器,并根据ActionMapping提供的上下文相关的URI转发控制
*许多 Struts 开发人员避免从一个页面直接连接到其他地方而是通过Action 或者 ActionForward来传递控制。这保证了工作流在Struts 配置的控制之下,在这里可以进行集中管理。
*然而,许多页面并不需要特殊的预处理(至少还不需要)。如果为这些页面创建ActionMapping,你可以使用ForwardAction,来仅进行路由控制。如果以后,需求改变,又需要进行预处理,你可以改变mapping 来为那个页面引用到一个Action。因为链接是引用到mapping, 而不是Action类, 所以你可以修改Action类而不用改变链接。
4、如果同时存在一个action标签同时存在forward属性,又存在forward子元素,那么前者优先,不会执行到自定义action的exceute方法。
在Struts核心类,RequestProcessor的方法process中,我们看到
// Process a forward or include specified by this mapping
if (!processForward(request, response, mapping)) {
return;
}
如果存在forward的属性,就直接返回了,不再向下执行了,不会调到我们自定义action的exceute方法。
我们如果要做一些自己的事,就必须用forward的子元素的方式,而不能用forward属性的方式。
分享到:
相关推荐
struts2——docs部分
Struts2教程 Struts2教程 Struts2教程
使用Struts做登录验证的步骤: 1 搭建环境: A 导包 B 建配置文件 struts-config.xml C 修改web.xml 2 建一个 ActionForm 3 建一个 Action 4 页面上面的事情
STRUTS——SQL添加
Struts——Menu示例教程 Struts——Menu示例教程 Struts——Menu示例教程
STRUTS——SQL添加删除
struts2主要的几个包
STRUTS——基础
STRUTS——Oracle登陆
STRUTS——图片上传
概述 本文主要讲解什么是Struts Framework,它的框架结构,组件结构,以及简单的配置讲解。 文章的包括了如下七大部分: Framework的概念和体系简介 Struts的概念和体系结构 Struts的工作原理和组件 ...一个简单的示例
旺旺教师————Struts2旺旺教师————Struts2旺旺教师————Struts2旺旺教师————Struts2
对Struts——an_open-source_MVC_implementation进行专业翻译,可作为毕业设计外文翻译参考。
struts——java文件-
毕业翻译的好素材,Struts——一种开源MVC的实现 , 外文文献翻译
myeclipse+struts+tomcat 简单登陆及验证。
myeclipse+struts+tomcat 猜数字,随即产生数字
myeclipse+struts+tomcat 文件上传,可以实现多文件上传
Struts——MVC 的一种开放源码实现文献翻译.doc
Malcolm Davis. Struts--an open-source MVC implementation[J]. IBM Systems Journal, 2006,44(2):33-37.