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类中定义属 ...
随机推荐
- 通过 ssh 建立本地与 github 的连接
查看 ssh key cd ~/.ssh cat 名字.pub 如果本地没有 ssh key,则新建 ssh-keygen -t rsa -C "mobro_chu@163.com" ...
- Js拾忆
instanceof运算符:他是判断一个构造函数的prototype是否在对象的原型链上查找到 var a = new Array(); console.log(a instanceof Array) ...
- es6 Promise简单介绍
promise的基本用法 promise执行多步操作非常好用,那我们就来模仿一个多步操作的过程,那就以吃饭为例吧.要想在家吃顿饭,是要经过三个步骤的. 洗菜做饭. 坐下来吃饭. 收拾桌子洗碗. 这个过 ...
- Unity --- 设置选择的图片的格式
static void Setting(string assetPath, int maxSize, TextureImporterFormat androidFormat, TextureImpor ...
- java 获取微信公众号code为空
失败的原因是没将回调方法encode转换 /** * URL编码(utf-8) * * @param source * @return */ public static String urlEncod ...
- 倍增法求LCA(最近公共最先)
对于有根树T的两个结点u.v,最近公共祖先x=LCA(u,v)表示一个结点x,满足x是u.v的祖先且x的深度尽可能大. 如图,根据定义可以看出14和15的最近公共祖先是10, 15和16的最近公共 ...
- OpenBUGS抽样数据基本操作
新建两个文件 第一个文件写操作程序,第二个文件写数据数量,类似于下图 鼠标聚焦在第一个文件中,点击工具栏的Model,选择Specification,然后点击check Moel,会有弹框出现 点击确 ...
- 记一次mybatis bindingexception 问题排查
看到的错误信息如出一辙都是这样的:Method threw 'org.apache.ibatis.binding.BindingException' exception.Invalid bound s ...
- 从ranknet到lamdarank,再到lamdamart
learn2rank目前基本两个分支,1是神经网络学派ranknet,lamdarank,另一个是决策树学派如gbrank,lamdamart 05年提出ranknet,算分模块是简单的全连接网络,l ...
- vue2.0配置路由
配置路由之前,先检查vue版本,(案例适用vue2.0) 采用npm包的形式进行安装. 安装路由依赖:npm install vue-router(代码中,如果在一个模块化工程中使用它,必须要通过 V ...