Struts2中Action之ResultType
我们在struts-defalut.xml文件中可以看到如下图所示:

这些类型是配置文件所带的。接下来我们主要讲解我标注出来的这个,其他的我就不做详解了,有兴趣的可以去试试。
web.xml文件我在这里就不配置了。直接从action开始
1.0当type取值为chain时:
chain:转发到action
创建LoginAction继承ActionSupport类定义方法
package cn.struts2.action; import com.opensymphony.xwork2.ActionSupport; import java.util.Map; /**
* Created by accp on 2017/3/1.
*/
public class LoginAction extends ActionSupport {
public String list(){
System.out.println("====进入==LoginAction====list============");
return "list";
} public String add(){
System.out.println("====进入====LoginAction==add============");
return "add";
}
}
创建ShoppingAction
package cn.struts2.action; import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext; import javax.servlet.http.HttpServletRequest; /**
* Created by accp on 2017/3/2.
*/
public class ShoppingAction extends ActionSupport { public String list(){
System.out.println("========进入ShoppingAction=====list============");
HttpServletRequest request = ServletActionContext.getRequest();
String uname = (String) request.getAttribute("uname");
System.out.println(uname);
return "list";
} public String add(){
System.out.println("======进入ShoppingAction=======add============");
return "add";
}
}
创建两个jsp页面,填写上不同的内容。
最主要的接下来配置struts.xml
.......
<!--转发到action-->
<action name="loginAdd" class="cn.struts2.action.LoginAction" method="add">
<result name="add" type="chain">
<param name="actionName">shoppingList</param>
<param name="namespace">/</param> </result>
</action>
<action name="shoppingList" class="cn.struts2.action.ShoppingAction" method="list">
<result name="list">/success.jsp</result>
<result name="success"></result>
</action>
<param name="actionName">loginList</param>:指向的是你要转向的action的逻辑名称,要特别注意!!!!!!!
actionName:系统定义。在struts-defalut.xml------>result-type----->ActionResultType

运行效果:


因为在一次转发内携带数据是有效的,我们就可以得到上图的结果。
1.1type取值为dispatcher
dispatcher:转发到页面(以LoginAction类为例)
<!--转发到页面-->
<action name="loginAction2" class="cn.struts2.action.LoginAction" method="add">
<result name="add" type="dispatcher">
/success.jsp
</result>
</action>
直接指向页面即可,不需要再返回action通过别的方法。
1.2type取值为redirectAction
redirectAction:重定向action
struts.xml配置:
<!--重定向action-->
<action name="loginAction3" class="cn.struts2.action.LoginAction" method="add">
<result name="add" type="redirectAction">
<param name="actionName">shoppingList</param>
<param name="namespace">/</param>
</result>
</action>
<action name="shoppingList" class="cn.struts2.action.ShoppingAction" method="list">
<result name="list">/index.jsp</result>
</action>
上述方法不变运行,效果图如下:



从两张图中我们可以很清晰的看出,地址栏发生了很大的变化,再看结果,由于我们把数据方法的是request作用域中,在一次转发内
可以拿到数据,但是重定向相当于重新请求,携带的数据消失,得到null。
1.3type取值为redirect
redirect:重定向到页面
<!--重定向到页面-->
<action name="loginAction4" class="cn.struts2.action.ShoppingAction" method="list">
<result name="list" type="redirect">
/success.jsp
</result>
</action>
重定向地址栏都会发生变化,在使用的时候要根据自己的需求选择合适的类型。
1.4type取值为plainText
plainText:纯文本
struts.xml:
<!--plainText-->
<action name="loginAction5" class="cn.struts2.action.LoginAction" method="add">
<result name="add" type="plainText">
<param name="charSet">UTF-</param>
<param name="location">/index.jsp</param>
</result>
</action>
复制代码
<param name="charSet">UTF-8</param>:
location:指向那个页面。
效果图:

得到的是源代码。很神奇是吧,你可以试试其他的类型。
就到这里吧............
Struts2中Action之ResultType的更多相关文章
- Struts2中Action取得表单数据的几种方法
Struts2中Action取得表单数据的几种方法 Struts2中Action获得表单数据的几种方法struts2 Action获取表单传值 1.通过属性驱动式JSP: <form act ...
- 关于struts2中action请求会执行两次的问题
关于struts2中action请求会执行两次的问题 在struts2中发现,调用action中的方法,方法会被执行两次,后来发现调用的方法是get开头的,把它改为其他名称开头的后,就不会执行 ...
- struts2中Action到底是什么,怎么理解
struts2中Action到底是什么,怎么理解 1.配置完web.xml2.创建视图页面login.jsp3.创建业务控制器LoginAction类(解释说:创建业务控制器LoginAction类, ...
- jap页面获取struts2中action中变量的值
在jsp页面中可以通过ONGL表达式获取struts2中action处理后的变量的值,这是因为每一个action在初始化后都会放到strackcontext中,可以通过ONGL表达式取到值. 注意要在 ...
- Struts2中Action接收参数的方法
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt112 Struts2中Action接收参数的方法主要有以下三种: 1.使用A ...
- Struts2中Action接收参数的方法主要有以下三种:
Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数(最原始的方式): a.定义:在Action类中定义属性,创建get和set方法: b.接 ...
- 基于用户登陆的struts2中action的分类详解
在struts2中action的分类有:继承 ActionSupport 实现 Action,模型驱动(ModelDriven)的 Action,多方法的 Action三种方式. 1.继承 Actio ...
- Struts2中Action自己主动接收參数
Struts2中Action接收參数的方法主要有下面三种: 1.使用Action的属性接收參数:(通过属性驱动式) a.定义:在Action类中定义属性,创建get和set方法. b. ...
- Struts2中Action接收参数
Struts2中Action接收参数的方法主要有以下三种: Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数: a.定义:在Action类中定义属 ...
随机推荐
- java.lang.ClassNotFoundException: javax.servlet.SessionCookieConfig
使用 MockMvc 模拟进行单元测试时出现以下的错误,网上看到的资料应该是说Spring4.0需要servlet3.0的支持? 在pom.xml更改servlet的版本依赖后即可
- redis缓存中间件基础
前序: 默认使用SimpleCacheConfiguration 组件ConcurrentMapCacheManager==ConcurrentMapCache将数据保存在ConcurrentMap& ...
- VS2017生成带图标的QT项目方法
仅仅是为了记录,避免以后忘记. 1.拷贝图标到代码文件夹下,与vcxproj文件保持在同一级目录 2.新建gisApp.txt文件,然后将后缀名改为.rc,并写入下面的文本 IDI_ICON1 ICO ...
- python-作用域解析
局部作用域和全局作用域:局部作用域不能修改全局作用域的变量 count = 10 def outer(): #global count 局部变量改成全局变量,global声明一下即可.就可以修改了. ...
- Confluence 6 针对合并完全失败的内容重新运行合并
如果在系统合并的时候有任何内容的合并失败的话,一个 Confluence 的管理员可以再次重新启动内容合并(请参考前面页面的内容).只有内容还是使用 wiki 格式的才会被合并,因此重新合并所需要的时 ...
- cryptoJS
CryptoJS通俗的来讲是为了安全性,将前端传递到后端的参数加密 加密/解密方法(对称加密算法) AES 高级加密标准,是下一代的加密算法标准,速度快,安全级别高 DES 数据加密标准,适用于大量数 ...
- win10搭建svn服务
1,安装服务器版svnhttps://tortoisesvn.net/downloads.html查看版本 svn --version 2,创建版本仓库提倡创建公共仓库,那么可以多次增加项目svnad ...
- ssh跳过knownhost文件
在平时工作中,有时候需要SSH登陆到别的Linux主机上去,但有时候SSH登陆会被禁止,并弹出如下类似提示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...
- Linux Mint 18.1 MAME 成功运行
折腾了一个下午,终于成功可以用手柄接着chromebook 来玩街机游戏了(灌篮高手.拳皇.突击骑兵) 在http://sdlmame.wallyweek.org/download/ 下载对应的mam ...
- C#数组--(一维数组,二维数组的声明,使用及遍历)
数组:是具有相同数据类型的一组数据的集合.数组的每一个的变量称为数组的元素,数组能够容纳元素的数称为数组的长度. 一维数组:以线性方式存储固定数目的数组元素,它只需要1个索引值即可标识任意1个数组元素 ...