我们在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的更多相关文章

  1. Struts2中Action取得表单数据的几种方法

    Struts2中Action取得表单数据的几种方法   Struts2中Action获得表单数据的几种方法struts2 Action获取表单传值 1.通过属性驱动式JSP: <form act ...

  2. 关于struts2中action请求会执行两次的问题

    关于struts2中action请求会执行两次的问题     在struts2中发现,调用action中的方法,方法会被执行两次,后来发现调用的方法是get开头的,把它改为其他名称开头的后,就不会执行 ...

  3. struts2中Action到底是什么,怎么理解

    struts2中Action到底是什么,怎么理解 1.配置完web.xml2.创建视图页面login.jsp3.创建业务控制器LoginAction类(解释说:创建业务控制器LoginAction类, ...

  4. jap页面获取struts2中action中变量的值

    在jsp页面中可以通过ONGL表达式获取struts2中action处理后的变量的值,这是因为每一个action在初始化后都会放到strackcontext中,可以通过ONGL表达式取到值. 注意要在 ...

  5. Struts2中Action接收参数的方法

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt112 Struts2中Action接收参数的方法主要有以下三种: 1.使用A ...

  6. Struts2中Action接收参数的方法主要有以下三种:

    Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数(最原始的方式):     a.定义:在Action类中定义属性,创建get和set方法:     b.接 ...

  7. 基于用户登陆的struts2中action的分类详解

    在struts2中action的分类有:继承 ActionSupport 实现 Action,模型驱动(ModelDriven)的 Action,多方法的 Action三种方式. 1.继承 Actio ...

  8. Struts2中Action自己主动接收參数

    Struts2中Action接收參数的方法主要有下面三种: 1.使用Action的属性接收參数:(通过属性驱动式)     a.定义:在Action类中定义属性,创建get和set方法.     b. ...

  9. Struts2中Action接收参数

    Struts2中Action接收参数的方法主要有以下三种: Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数:     a.定义:在Action类中定义属 ...

随机推荐

  1. 生信工具汇总--OMICtools

    各种生信工具: https://omictools.com/

  2. 【React】学习之道

    一.工欲善其事必先利其器 - 准备工作 安装vscode:https://code.visualstudio.com/ 安装node.js:https://nodejs.org/en/ 安装gitba ...

  3. (完美)华为Mate8 NXT-TL00的USB调试模式在哪里开启的经验

    每当我们使用pc通过数据线连接上安卓手机的时候,如果手机没有开启usb调试模式,pc则没法成功检测到我们的手机,在一些情况下,我们使用的一些功能比较强的的软件如以前我们使用的一个软件引号精灵,老版本就 ...

  4. Java8:Lambda表达式增强版Comparator和排序

    1.概述 在这篇教程里,我们将要去了解下即将到来的JDK 8(译注,现在JDK 8已经发布了)中的Lambda表达式——特别是怎样使用它来编写Comparator和对集合(Collection)进行排 ...

  5. Python 文件的基本操作

    打开文件的模式有: r,只读模式(默认). w,只写模式.[不可读:不存在则创建:存在则删除内容:] a,追加模式.[可读:   不存在则创建:存在则只追加内容:] "+" 表示可 ...

  6. SWPU新闻后台登录页面

    最终效果图: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...

  7. Confluence 6 升级以后

    7. 拷贝你的数据库驱动 如果你现在使用的是 Oracle 或者 MySQL 数据库的话,你讲要重新拷贝 jdbc 驱动的 jar 文件到你已经存在的 Confluence 安装目录中 conflue ...

  8. gulp打开gbk编码的html文件乱码

    先上图,好忧伤:

  9. .NET SQLServer数据库转MySql

    第一步:找到下图两个组件,卸载. 第二步:NuGet下载下图组件. 第三步:在连接数据库OnConfiguring方法处,做如下修改: protected override void OnConfig ...

  10. 下面程序的输出结果是____ A:11,10 B:11,11 C:10,10 D:10,11 int x=10; int y=x++; printf("%d,%d",(x++,y),y++);

    下面程序的输出结果是____ A:11,10 B:11,11 C:10,10 D:10,11 int x=10; int y=x++; printf("%d,%d",(x++,y) ...