本文主要是介绍四种forward,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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
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属性的方式。
这篇关于四种forward的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!