浅谈Struts2

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈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的主要内容,如果未能解决你的问题,请参考以下文章

浅谈Struts2

浅谈Struts2

浅谈Struts2

浅谈Struts2

浅谈struts2标签中的2个非经常常使用的标签的使用方法(radio和select)

浅谈Struts2的过滤器