struts2学习(4)struts2核心知识III
一、result配置:

1.result中的type类型:
com.cy.action.HelloAction.java:
package com.cy.action;
import com.opensymphony.xwork2.ActionSupport;
public class HelloAction extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String execute() throws Exception {
return SUCCESS;
}
//redirect
public String r() throws Exception {
return "r";
}
//chain
public String c() throws Exception {
return "c";
}
//redirectAction
public String ra() throws Exception {
return "ra";
}
}
com.cy.action.HelloAction2.java:
package com.cy.action;
import com.opensymphony.xwork2.ActionSupport;
public class HelloAction2 extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name2;
public String getName2() {
return name2;
}
public void setName2(String name2) {
this.name2 = name2;
}
@Override
public String execute() throws Exception {
this.name2 = "你好啊";
return SUCCESS;
}
}
struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true" /> <package name="manage" namespace="/" extends="struts-default">
<action name="hello" class="com.cy.action.HelloAction">
<result name="success" type="dispatcher">success.jsp</result>
<result name="r" type="redirect">success.jsp</result>
<result name="c" type="chain">hello2</result>
<result name="ra" type="redirectAction">hello2</result>
</action> <action name="hello2" class="com.cy.action.HelloAction2">
<result name="success" type="dispatcher">success.jsp</result>
</action>
</package>
</struts>
index.jsp:
<body>
<a href="hello?name=struts2" target="_blank">默认转发_dispatcher</a><br>
<a href="hello!r?name=struts2" target="_blank">重定向_redirect</a><br>
<a href="hello!c?name=struts2" target="_blank">链条_chain</a><br>
<a href="hello!ra?name=struts2" target="_blank">重定向到Action_redirectAction</a><br>
</body>
success.jsp:
<body>
name: ${name}<br>
name2:${name2 }
</body>
测试结果:

1)默认转发-dispatcher:

name的值取到了;url中地址不变;
2)重定向-redirect:

name的值取不到;不是同一个request了,所以数据没法共享;
url地址栏变了;
3)链条-chain:

name的数据能取,内部转发到了一个新的Action,这个数据可以共享;
name2的数据能取,是hello2Action自己设进去的,肯定能取;
url地址:不变;
4)重定向到action - redirectAction:

name的值取不到:从一个action中重定向到另一个action继续执行,这里面数据带不过去,不是一个request;客户端重新请求hello2.action:那么:
name2的值是hello2Action自己设进去的,肯定能取;
url:已经变成了hello2.action;说明客户端重新请求了hello2.action;
2.result全局配置:
package com.cy.action;
import com.opensymphony.xwork2.ActionSupport;
public class HelloAction extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
private String error;
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String execute() throws Exception {
if(name==null || name.length()==0){
error = "name是空的";
return ERROR;
}
return SUCCESS;
}
//redirect
public String r() throws Exception {
return "r";
}
//chain
public String c() throws Exception {
return "c";
}
//redirectAction
public String ra() throws Exception {
return "ra";
}
}
struts.xml配置:
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true" /> <package name="manage" namespace="/" extends="struts-default">
<global-results>
<result name="error">error.jsp</result>
</global-results> <action name="hello" class="com.cy.action.HelloAction">
<result name="success" type="dispatcher">success.jsp</result>
<result name="r" type="redirect">success.jsp</result>
<result name="c" type="chain">hello2</result>
<result name="ra" type="redirectAction">hello2</result>
</action> <action name="hello2" class="com.cy.action.HelloAction2">
<result name="success" type="dispatcher">success.jsp</result>
</action>
</package>
</struts>
error.jsp:
<body>
错误信息:${error }
</body>
index.jsp:
<body>
<a href="hello" target="_blank">全局result配置</a><br>
</body>
测试:

-------------
struts2学习(4)struts2核心知识III的更多相关文章
- Struts2学习笔记——Struts2与Spring整合
Struts2与Spring整合后,可以使用Spring的配置文件applicationContext.xml来描述依赖关系,在Struts2的配置文件struts.xml来使用Spring创建的 ...
- Struts2学习一----------Struts2的工作原理及HelloWorld简单实现
© 版权声明:本文为博主原创文章,转载请注明出处 Struts2工作原理 一个请求在Struts2框架中的处理步骤: 1.客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2.这个请求 ...
- struts2学习(2)struts2核心知识
一.Struts2 get/set 自动获取/设置数据 根据上一章.中的源码继续. HelloWorldAction.java中private String name,自动获取/设置name: pac ...
- struts2学习(3)struts2核心知识II
一.struts.xml配置: 1.分模块配置方法: 比如某个系统多个模块,我们把资产管理模块和车辆管理模块,分开,在总的struts.xml配置文件中include他们: 工程结构: struts. ...
- struts2学习(1)struts2 helloWorld
一.struts2简介: 二.helloWorld: 1)工程结构: HelloWorldAction.java: package com.cy.action; import com.opensymp ...
- Struts2学习笔记——Struts2搭建和第一个小程序
1.新建web项目 2.配置Struts2核心过滤器 (1)打开web.xml文件,做以下配置: <?xml version="1.0" encoding="UTF ...
- Struts2学习笔记--Struts2的体系结构
1. Struts2体系结构 Struts是以前端控制器框架为主体的框架,用户的请求会通过控制器选择不同的Action类来执行具体的操作,在Action类中所有的Servlet对象(request.r ...
- struts2学习(15)struts2防重复提交
一.重复提交的例子: 模拟一种情况,存在延时啊,系统比较繁忙啊啥的. 模拟延迟5s钟,用户点了一次提交,又点了一次提交,例子中模拟这种情况: 这样会造成重复提交: com.cy.action.St ...
- struts2学习(14)struts2文件上传和下载(4)多个文件上传和下载
四.多个文件上传: 五.struts2文件下载: 多个文件上传action com.cy.action.FilesUploadAction.java: package com.cy.action; i ...
随机推荐
- Nginx+keepalived 脚本安装主从双机热备自动切换解决方案
Nginx+keepalived 脚本安装主从双机热备自动切换解决方案 2013-07-02 19:24:13 标签:filesnginx keepalived 原创作品,允许转载,转载时请务必以超链 ...
- 内存保护机制及绕过方法——利用Ret2Libc绕过DEP之ZwSetInformationProcess函数
1. DEP内存保护机制 1.1 DEP工作原理 分析缓冲区溢出攻击,其根源在于现代计算机对数据和代码没有明确区分这一先天缺陷,就目前来看重新去设计计算机体系结构基本上是不可能的,我们只能靠 ...
- *SCM-MANAGER独立部署方式
从官网获取最新版本 scm-manager 独立安装包 https://www.scm-manager.org/download/ 解压 为合适的路径 修改 services.bat 文件服务相关信息 ...
- JPlayer使用之二,主要函数介绍
上一篇插件搭建的顺序最后一步的页面初始化函数中,就是最重要的一步,就先从这个函数说起吧. $("#jquery_jplayer_1").jPlayer({ ready: funct ...
- PostgreSQL基于时间点故障恢复PITR( point-in-time recovery )
PostgreSQL在使用过程中经常会发生一些失误的操作,但往往是可以弥补的.但是如果真遇到了无法挽回的误操作,只能寄希望于有备份了. 接下来的故障恢复也是基于有备份的情况,没有备份的情况,目前还没有 ...
- DW数据仓库与ODS的区别
这两天接触到ODS,开始很纳闷,有了DW(Data Warehouse)干嘛还要ODS(Operational Data Store),于是不查不知道,一查吓一跳,这里面还有这么多道道,这里总结一下, ...
- JMter压力测试
一. 压力测试场景设置 一般我们在做压力测试的时候,分单场景和混合场景,单场景也就是咱们压测单个接口的时候,多场景也就是有业务流程的情况下,比如说一个购物流程,那么这样的场景就是混合场景,就是有多个接 ...
- HDU2037 今年暑假不AC
解题思路:贪心问题,关键突破口是,先将节目的结束时间 从小到大排个序,然后依次判断后面一个节目的开始时间 是否大于或等于前一个符合条件的节目的结束时间.见代码: #include<cstdio& ...
- HDU - 4336:Card Collector(min-max容斥求期望)
In your childhood, do you crazy for collecting the beautiful cards in the snacks? They said that, fo ...
- HihoCoder1050 树中的最长路 树形DP第三题(找不到对象)
题意:求出的树中距离最远的两个结点之间相隔的距离. 水题一道,以前只会用路的直径来解. 代码如下: #include<cstdio> #include<cstdlib> #in ...