一、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(二)的更多相关文章

  1. 浅谈struts2之chain

    转自:http://blog.csdn.net/randomnet/article/details/8656759 前一段时间,有关chain的机制着实困绕了许久.尽管网上有许多关于chain的解说, ...

  2. Android开发-浅谈架构(二)

    写在前面的话 我记得有一期罗胖的<罗辑思维>中他提到 我们在这个碎片化 充满焦虑的时代该怎么学习--用30%的时间 了解70%该领域的知识然后迅速转移芳草鲜美的地方 像游牧民族那样.原话应 ...

  3. 浅谈 Struts2 面试题收藏

    Struts2面试题 一.工作原理 一个请求在Struts2框架中的处理大概分为以下几个步骤 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过一系列的过滤器(Fi ...

  4. 浅谈Struts2拦截器的原理与实现

    拦截器与过滤器           拦截器是对调用的Action起作用,它提供了一种机制可以使开发者定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行.同时也是提供了 ...

  5. [SSH 2] 以网站主页面浅谈Struts2配置

    导读:前面总体的介绍了一下SSH框架,那么作为Struts这一支,具体是怎么配置的呢?本篇博客则主要是以自己做过的实例中的登录一条线,简单介绍一下struts2的配置,如有不妥之处,还请大家多提点提点 ...

  6. 浅谈Struts2(三)

    一.Struts2收集client的参数 核心思路: <form method="post" action="XXXX"> <input ty ...

  7. 浅谈Struts2

    学过SSH框架很长一段时间了,一直没有很系统的总结一下,这里先简单谈谈Struts2. 为什么要用Struts2? 这里列举一些Servlet的缺点: 1.每写一个servlet在web.xml中都要 ...

  8. 小学生之浅谈Struts2与struts1的运行机制

    Struts1工作原理图: 1.初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(s ...

  9. Qt浅谈之二十七进程间通信之QtDBus

    一.简介 DBus的出现,使得Linux进程间通信更加便捷,不仅可以和用户空间应用程序进行通信,而且还可以和内核的程序进行通信,DBus使得Linux变得更加智能,更加具有交互性.        DB ...

随机推荐

  1. 利用OpenCV和MFC对话框建设一个有滑动条控制的播放器--转

    (一)问题的提出: OpenCV有一个很简单的播放视频文件并加载滑动条的程序,但是如何用MFC对话框来创建一个有滑动条控制的播放器呢,网络上四处搜索都没有代码可以参考,下的都是些骗子链接文件,很过分, ...

  2. new Date().getTime()

    new Date().getTime()获取当前时间戳; 不知道是毫秒级还是千分之一毫秒级别

  3. .NET中TextBox控件设置ReadOnly=true后台取不到值 三种解决方法

    方法一:不设置ReadOnly属性,通过onfocus=this.blur()来模拟,如下: <asp:TextBox ID="TextBox1" runat="s ...

  4. spm3 基本

    spm3 命令 spm init //初始化一个spm模块,会生成基本配置以及测试文件等(下图). //注 初始化以后一般需要 鲜执行一下 spm install 安装默认依赖模块 index.js就 ...

  5. 利用CSS3的transform 3D制作的立方体旋转效果

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  6. ContentType 属性 MIME

    ".asf" = "video/x-ms-asf" ".avi" = "video/avi" ".doc&qu ...

  7. IE 对象不支持“attachEvent”属性或方法

    解决方法:attachEvent 是很旧的非标准方法.请使用 addEventListener.

  8. oracle 使用 decode函数 或 case when 实现行转列

    ----创建测试表 create table student_score( name varchar2(20), subject varchar2(20), score number(4,1) ); ...

  9. 对于System.Net.Http的学习(一)——System.Net.Http 简介(转)

    最新在学习System.Net.Http的知识,看到有篇文章写的十分详细,就想转过来,自己记录下.原地址是http://www.cnblogs.com/chillsrc/p/3439215.html? ...

  10. BZOJ 1801: [Ahoi2009]chess 中国象棋( dp )

    dp(i, j, k)表示考虑了前i行, 放了0个炮的有j列, 放了1个炮的有k列. 时间复杂度O(NM^2) -------------------------------------------- ...