struts2中常用Result类型(type)的用法
一、dispatcher
(1)为缺省的result类型,一般情况下我们在struts.xml会这么写:
以上写法使用了两个默认,其完整的写法为:
- <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)的用法相关推荐
- struts2中常用Result类型的用法
一.dispatcher (1)为缺省的result类型,一般情况下我们在struts.xml会这么写: <result name="success">/main.js ...
- struts2中常用Result总结
1.dispatcher(默认) dispatcher类型表示将请求转发给其他资源,浏览器显示的导向是action.Action中的数据一直保存在. 只能是页面,不能是另一个action(可 ...
- mysql 枚举 enum用法_mysql中的枚举类型ENUM的用法:
mysql中的枚举类型ENUM的用法: (2010-06-18 13:44:13) mysql中的枚举类型ENUM的用法: mysql中的枚举类型ENUM是一个字符串对象,它的值是自表创建时在列规定中 ...
- mysql数据库中常用的类型_MySQL数据库中常用字段类型
MySQL数据库中常用字段类型 整数型:TINYINT,SMALLINT,INT,BIGINT 小数型:FLOAT,DOUBLE,DECIMAL(M,D) 字符型:CHAR,VARCHAR 日期型:D ...
- 【转】Struts2中转换Date类型的问题
好久没有写Blog了,最近似乎变懒了.今天上班没有很多事,于是把之前遇到的一个问题记录下来. Web开发会涉及到很多类型转换的情况.我们知道,页面中的一切值都是字符串类型,而到后台,我们需要的可能是其 ...
- Struts2中<s:iterator>基本用法及示例
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Struts2中<s:iterator>基本用法及示例 Iterator用于遍历集合(j ...
- 关于struts2中No result defined for action这个异常的解决思路
[size=medium] [color=red] 我在遇到这个问题时(No result defined for action....input),这篇文章给了我一些启发,觉得文章有借鉴意义,便引用 ...
- 实战! excel中常用函数INDIRECT公式的用法
实战中的应用: 图一 当我们日常工作中,拿到这样一份表(图一),并需要从中拿到自己想要的数据,如下图(图二): (图二) 像这种重复性的工作,每日去一个个去寻找,不但浪费时间,还极其容易找错,这个时候 ...
- 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是返回值错误, ...
- struts2中checkboxlist和radio的基本用法
第一种用法: <s:checkboxlist name="b" list="#{'凤凰座':'一辉','双子座':'撒卡','白羊座':'史昂','天枰座':'童虎 ...
最新文章
- 【青少年编程】【三级】计算平均分
- ZXing.Net.Mobile无法识别较大的条码
- 【Visual Studio】Visual Studio 2019 创建 Windows 控制台程序 ( 安装 ‘使用 C++ 的桌面开发‘ 组件 | 创建并运行 Windows 控制台程序 )
- Flutter:实现红包晃动效果
- UOS LoongArch 上成功安装.NET Core 3.1
- Windows RC、CTP、RTM、OEM、RTL、VOL等版本区别
- 区块链学堂——公有链、私有链、联盟链、侧链、互联链
- Java软件开发技术交流群
- java eml 附件_Javamail怎样写带附件eml文件?
- java char取值范围是_Java 基本数据类型取值范围讲解
- 求两点之间的夹角--两种方法
- 据说,这四招能提高你的打字速度 快来试试
- Java生成PDF文件保存到本地磁盘
- iphone和mac互传文件_mac和windows怎么互传文件_让mac和windows电脑互传文件的方法-系统城...
- 微信分身服务器,苹果微信分身版
- 连续分配方式 -- 可重定位分区分配
- selenium利用javascript进行自动打印网页为PDF
- web项目设计与开发——DBHelper2
- Windows Server 2016 部署DNS
- post方式下载excel表格