struts2中常用Result类型(type)的用法
关键字: struts2

一、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类型(type)的用法相关推荐

  1. struts2中常用Result类型的用法

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

  2. struts2中常用Result总结

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

  3. mysql 枚举 enum用法_mysql中的枚举类型ENUM的用法:

    mysql中的枚举类型ENUM的用法: (2010-06-18 13:44:13) mysql中的枚举类型ENUM的用法: mysql中的枚举类型ENUM是一个字符串对象,它的值是自表创建时在列规定中 ...

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

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

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

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

  6. Struts2中<s:iterator>基本用法及示例

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Struts2中<s:iterator>基本用法及示例 Iterator用于遍历集合(j ...

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

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

  8. 实战! excel中常用函数INDIRECT公式的用法

    实战中的应用: 图一 当我们日常工作中,拿到这样一份表(图一),并需要从中拿到自己想要的数据,如下图(图二): (图二) 像这种重复性的工作,每日去一个个去寻找,不但浪费时间,还极其容易找错,这个时候 ...

  9. 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是返回值错误, ...

  10. struts2中checkboxlist和radio的基本用法

    第一种用法: <s:checkboxlist name="b" list="#{'凤凰座':'一辉','双子座':'撒卡','白羊座':'史昂','天枰座':'童虎 ...

最新文章

  1. 【青少年编程】【三级】计算平均分
  2. ZXing.Net.Mobile无法识别较大的条码
  3. 【Visual Studio】Visual Studio 2019 创建 Windows 控制台程序 ( 安装 ‘使用 C++ 的桌面开发‘ 组件 | 创建并运行 Windows 控制台程序 )
  4. Flutter:实现红包晃动效果
  5. UOS LoongArch 上成功安装.NET Core 3.1
  6. Windows RC、CTP、RTM、OEM、RTL、VOL等版本区别
  7. 区块链学堂——公有链、私有链、联盟链、侧链、互联链
  8. Java软件开发技术交流群
  9. java eml 附件_Javamail怎样写带附件eml文件?
  10. java char取值范围是_Java 基本数据类型取值范围讲解
  11. 求两点之间的夹角--两种方法
  12. 据说,这四招能提高你的打字速度 快来试试
  13. Java生成PDF文件保存到本地磁盘
  14. iphone和mac互传文件_mac和windows怎么互传文件_让mac和windows电脑互传文件的方法-系统城...
  15. 微信分身服务器,苹果微信分身版
  16. 连续分配方式 -- 可重定位分区分配
  17. selenium利用javascript进行自动打印网页为PDF
  18. web项目设计与开发——DBHelper2
  19. Windows Server 2016 部署DNS
  20. post方式下载excel表格

热门文章

  1. 前端调用接口报错看不到报错响应时 console.dir
  2. memcache的资料集
  3. nodejs小问题:express不是内部或外部命令
  4. Eclipse tomcat先启动成功,然后再报超时原因之一
  5. SEO:搜索引擎优化的35个技巧
  6. 十六、oracle 索引
  7. 用js小类库获取浏览器的高度和宽度信息
  8. 对 Sea.js 进行配置 seajs.config
  9. 20169218 2016-2017-2 《网络攻防实践》第三周学习总结
  10. c#带参数和返回值的函数 开启线程调用的方法