首页 > 代码库 > 浅谈Struts2(二)
浅谈Struts2(二)
一、struts2的跳转
1、action跳转JSP
a、默认为forward
<action name="action1" class="com.liquidxu.struts2.FirstAction"> <result name="success" type="dispatcher">/admin/index.jsp</result></action>
<result>节点中的type属性,表明的该跳转为forward(默认值,可不写)。
b、redirect跳转
<action name="action1" class="com.liquidxu.struts2.FirstAction"> <result name="success" type="redirect">/admin/index.jsp</result></action>
在<result>节点中,将type属性设置为redirect,表明该跳转为redirect跳转。
2、action跳转action
a、forward跳转
<action name="action1" class="com.liquidxu.struts2.FirstAction"> <result name="success" type="chain">action2</result></action><action name="action2" class="com.liquidxu.struts2.SecAction"> <result name="success">/admin/index.jsp</result></action>
<result>节点中的内容填写的为跳转的action的那么属性。<result>节点中设置属性type="chain"。
b、redirect跳转
<action name="action1" class="com.liquidxu.struts2.FirstAction"> <result name="success" type="redirectAction">action2</result></action><action name="action2" class="com.liquidxu.struts2.SecAction"> <result name="success">/admin/index.jsp</result></action>
在<result>节点中设置属性type="redirectAction"即可。
二、包(package)
作用:按照功能模块管理<action>节点、功能的复用。
1、namespace命名空间
在用户的访问路径上,对不同的功能模块进行划分。
目的:可能通过filter对不同模块的Action进行额外处理。
//仅为示意代码//http://localhost:8080/struts_app/user/addUser<package name="user" extends="struts-default" namespace="/user"> <action name="addUser" class="">XXX</action> <action name="deleteUser" class="">XXX</action> <action name="updateUser" class="">XXX</action></package>
加了<package>节点之后,访问路径变为namespace+action.name。
2、action间的跨包跳转(type=chain|redirectAction)
<package name="p1" extends="struts-default" namespace="/p1"> <action name="action1" class="com.liquidxu.struts2.FirstAction"> <result name="success" type="chain"> <param name="namespace">/p2</param> <param name="actionName">action2</param> </result> </action></package><package name="p2" extends="struts-default" namespace="/p2"> <action name="action2" class="com.liquidxu.struts3.SecAction"> <result name="success">/admin/index.jsp</result> </action></package>
<resulte>节点下多了两个<param>节点,一个填写要跨的包的namespace,一个填写要跳转到的那个action的name。
3、全局跳转
目的:解决struts配置文件,跳转路径冗余的问题。
//代码仅为示例<package name="p1" extends="struts-default" namespace="/p1"> <global-results> <result name="success">/admin/index.jsp</result> </global-results> <aciton name="action1" class="XXXXX"> <result name="success">/admin/result.jsp</result> </action> <action name="action2" class="XXXXX"></action> <action name="action3" class="XXXXX"></action></package>
此示例中,action1会跳转到/admin/result.jsp(局部优先)。action2、action3均会跳转到上面所设置的全局跳转的路径。
ps、(1)全局跳转一定是在开发的后期,重构时使用的。
(2)局部跳转优先。
(3)跳转只在本包中有效。
浅谈Struts2(二)