一、dispatcher

(1)为缺省的result类型,一般情况下我们在struts.xml会这么写:
<result name="success">/main.jsp</result>

以上写法使用了两个默认,其完整的写法为:
# <result name="success" type="dispatcher">  
#          <param name="location">/maini.jsp</param>  
# </result>

第一个默认:type="dispatcher";第二个默认:设置的为location参数,location只能是页面,不能是另一个action(可用type="chain"解决)。

(2)实现方式

从doExecute方法看出,有三个出口(finalLocation为要跳转的地址):

pageContext.include(finalLocation);

dispatcher.forward(request, response); (dispatcher是根据finalLocation创建的)

dispatcher.include(request, response);

而我们知道,forward与include都是转发到context内部的资源。

二、redirect

(1)可以重定向到一个页面,另一个action或一个网址。
# <result name="success" type="redirect">aaa.jsp</result>  
# <result name="success" type="redirect">bbb.action</result>  
# <result name="success" type="redirect">www.baidu.com</result>

(2)实现方式:

查看doExecute方法,只有一个出口:

response.sendRedirect(finalLocation);

sendRedirect是重定向,是重新产生一个HTTP请求到服务器,故重定向后其原来所在的action上下文就不可用了。

三、chain

(1)主要用于把相关的几个action连接起来,共同完成一个功能。
# <action name="step1" class="test.Step1Action">  
#          <result name="success" type="chain">step2.action</result>  
# </action>  
#   
# <action name="step2" class="test.Step2Action">  
#          <result name="success">finish.jsp</result>  
# </action>

(2)实现方式:

查看execute()方法,主要思想如下:

// 根据Action名称finalActionName及要调用的方法finalMethodName来new一个代理对象proxy,并执行之
# proxy = actionProxyFactory.createActionProxy(finalNamespace,   
#                    finalActionName, finalMethodName, extraContext);   
# proxy.execute();

(3)多个action间数据的传递

主要有两种方式:

1。由于处于chain中的action属于同一个http请求,共享一个ActionContext,故可以在上下文中获取,在页面上可以直接使用。手动获取的方法如下:
# HttpServletRequest request = ServletActionContext.getRequest();   
# String s=(String)request.getAttribute("propName");

2。实现ModelDriven接口

在Step1Action中,加入getModel:
# public Object getModel() {         
#          return message;   
# }

在Step2Action中,加入setModel:
# public void setModel(Object o){   
#          System.out.println("message is:"+o);   
# }

注意,setModel的调用先于execute()方法后于构造方法。

struts2中常用Result类型的用法相关推荐

  1. struts2中常用Result总结

    1.dispatcher(默认)  dispatcher类型表示将请求转发给其他资源,浏览器显示的导向是action.Action中的数据一直保存在.     只能是页面,不能是另一个action(可 ...

  2. MySQL数据库,从入门到精通:第四篇——MySQL中常用的运算符及其用法

    MySQl学习(MySQL数据库,从入门到精通:第四篇--MySQL中常用的运算符及其用法 第四篇_MySQL中常用的运算符及其用法运算符 1. 算术运算符 1.加法与减法运算符 2.乘法与除法运算符 ...

  3. MapInfo中常用查询函数及用法

    MapInfo中常用查询函数及用法: 函数用途 语法 备注 图层中选点 Str$(obj)="point": Str(String)表示字符串:point表示点: 图层中选线 St ...

  4. mysql数据库中常用的类型_MySQL数据库中常用字段类型

    MySQL数据库中常用字段类型 整数型:TINYINT,SMALLINT,INT,BIGINT 小数型:FLOAT,DOUBLE,DECIMAL(M,D) 字符型:CHAR,VARCHAR 日期型:D ...

  5. 【转】Struts2中转换Date类型的问题

    好久没有写Blog了,最近似乎变懒了.今天上班没有很多事,于是把之前遇到的一个问题记录下来. Web开发会涉及到很多类型转换的情况.我们知道,页面中的一切值都是字符串类型,而到后台,我们需要的可能是其 ...

  6. 关于struts2中No result defined for action这个异常的解决思路

    [size=medium] [color=red] 我在遇到这个问题时(No result defined for action....input),这篇文章给了我一些启发,觉得文章有借鉴意义,便引用 ...

  7. C#中的枚举类型enum用法

    定义一个简单的枚举类型:    enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};        //这时候         Days.Sat = 0 ,后面 ...

  8. struts2中No result defined for action xxx.xxx.xxx and result xxx错误的几种解决方法

    首先先说一下No result defined for action xxx.xxx.xxx and result xxx这个错误 action后跟的是你的action名称 result是返回值错误, ...

  9. SQL Server中的锁类型及用法(转载)

    一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新  A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏读  ...

最新文章

  1. 如何教计算机认识手写数字(上)
  2. NeurIPS 2020有哪些值得读的「图神经网络」论文?
  3. s11.9 sar:收集系统信息
  4. Codeforces 793b B. Igor and his way to work 觉得大神写的3维bfs太复杂,突然发现这题是连连看算法。
  5. idea项目启动不起来_这些教育创业项目你还不知道吗,赶紧收藏起来吧!
  6. 关于机器学习 Machine Learning中loss函数参数正则化的一点思考
  7. 如何优雅的处理异常(java)
  8. 收藏模板:软件日报告模板(参考)
  9. 汽车尾气排放在线监控系统解决方案
  10. 【从0开始入门python】一个半月的三万字学习笔记汇总!!!
  11. 一个应用最广泛的营销分析工具
  12. http系列---OpenSSL生成根证书CA及签发子证书
  13. hbase数据库_实验目的
  14. C#图片加载与内存释放
  15. 共享出行化解城市交通难题(中)
  16. 浙大网新:子公司华通云数据与阿里巴巴达成合作
  17. Linux命令:man
  18. rad+xray漏洞扫描工具
  19. 谷歌被墙后,可以搜索的ip地址
  20. 信息流广告投放小白怎么入门?给刚毕业和想转行的人

热门文章

  1. 【Android 逆向】GDA 逆向工具安装 ( GDA 下载 | GDA 简介 | 运行 GDA 分析 APK 文件 )
  2. 【Binder 机制】AIDL 分析 ( 创建 AIDL 文件 | 创建 Parcelable 类 | AIDL 中使用 Parcelable 类 | 编译工程生成 AIDL 对应的Java源文件 )
  3. 【Java 并发编程】线程池机制 ( 线程池执行任务细节分析 | 线程池执行 execute 源码分析 | 先创建核心线程 | 再放入阻塞队列 | 最后创建非核心线程 )
  4. JZ2440驱动开发之环境搭建
  5. 6、通过xpath获取网页数据
  6. 前端包管理工具 yarn
  7. winform(MDI窗体容器、权限设置)
  8. 【转】Linux上安装使用SSH(ubunturedhat)
  9. 4K观影体验需要网络端到端带宽50M-100M,时延RTT<=20ms,丢包率PLR<=3.4*10
  10. java基础---动态代理机制