首页 > 代码库 > 浅谈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(二)