这一章节主要介绍如何配置结果集,分为以下几个知识点:

  • 结果集类型(result type)
  • 全局结果集(global types)
  • 动态结果集(dynamic type)
  • 带有参数的结果集(type with params)

result type:

结果集类型一共有十一种:

  1. dispatcher
  2. redirect
  3. chain
  4. redirectAction
  5. freemarker
  6. httpheader
  7. stream
  8. velocity
  9. xslt
  10. plaintext
  11. tiles

    最常用的是前两种:一个是请求转发,一个是请求重定向。

    还会用到的就是freemarker(模板),和stream(用于下载)。

我们的配置文件默认情况下都是dispatcher,请求转发,将struts得到的请求通过服务器转到相应的页面。

这里的requet是一次请求,二redirect是两次请求。(这个和javaweb里面的dispatcher和redirect相同这里就不做太多解释)。

chain是转向一个action,也就是将请求转到同一个包下的action(转到不同包下的action后面介绍)。

redirectAction是重定向到另一个Action,状态和redirect相同,作用和chain相同。

本文只介绍以上类型。接下来我们来看看具体是怎么配置的(dispatcher和redirect省略)。

 <action name="page1" class="">
<result type="dispatcher">/xxx.jsp</result>
</action> <action name="page2" class="">
<result type="redirect">/xxx.jsp</result>
</action> <action name="page3" class="">
<result type="chain">page1</result>
</action> <action name="page3" class="">
<result type="redirectAction">page1</result>
</action>

配置很简单,接下来我们来看看不同包下chain和redirectAction怎么配置:

 <package name="public" extends="struts-default" namespace="/">
<action name="page" class="">
<result type="chain">
<param name="actionName">action1</param>
<param name="namespace">/secure</param>
</result>
</action>
</package> <package name="secure" extends="struts-default" namespace="/secure">
<action name="action1" class="">
<result>xx.jsp</result>
</action>
</package>

只要在result里面定义想要调用的namespace和actionName参数,struts就会根据你的指定调用对应的action,上面的是chain的演示配置,redirectAction和它配置相同只要将type改为redirectAction就可以了。

全局结果集:

全局结果集,顾名思义就是全局的,就像java代码里面的全局变量一样,可以在整个程序里面被调用。

当我们在一个程序里面想返回一个错误页面的时候,总不能每个action里面都定义一个result,然后反悔error.jsp吧。

所以这个时候我们就可以用到全局结果集了(全局结果集在一个包里面“全局”)。

具体这样定义:

<global—results>
<result name="errorpage">/error.jsp</result>
</global—results>

这样配置过后,当前包的action里就可以返回errorpage达到返回作物页面的目的,省去了我们多次配置。

当其他包的action也想要获得这个全局结果集的时候只需要在它package extends属性里面继承含有全局属性的包就行了。

动态结果集

动态结果集、

struts.xml:

<action name="" class="xx.xxAction">
<result>${r}</result>
</action>
public class UserAction extends ActionSupport {
private int type; private String r; public String getR() {
return r;
} public void setR(String r) {
this.r = r;
} public int getType() {
return type;
} public void setType(int type) {
this.type = type;
} @Override
public String execute() throws Exception {
if(type == 1) r="/user_success.jsp";
else if (type == 2) r="/user_error.jsp";
return "success";
}
}

动态结果集的原理:当我们发送请求的时候,里面包含一个请求参数,我们在execute中根据参数将type我们将r赋予不同的值(页面字符串),并放入值栈中保存。

result里面包含一个ognl表达式,用来取得值栈里面r的数据。

这样就完成了动态的结果集。

带有参数的结果集

当客户端发送了一个请求,这个请求含有参数,我们将这个请求重定向到其他页面,那么我们怎么将这个参数继续带到其他页面呢?

请求带了一个名为type的参数

<result type="redirect">/user_success.jsp?t=${type}</result>

在jsp我们可以这样取值:

<s:property value="#parameters.t"/>

这个语句等价于:

<s:property value="ActionContext.getContext().parameters.t"/>

到这里我们的结果集就讲完了。

如有错误,欢迎指正。

Struts2学习---result结果集的更多相关文章

  1. Struts2框架(5)---result结果集

    result结果集 上一篇文章主要讲Struts2框架(4)---Action类访问servlet这篇主要讲result结果集 在Struts.xml中的result元素指的是:指定动作类的动作方法执 ...

  2. struts2学习笔记之七:Result类型

    一:关于Struts2的type类型,也就是Result类型,他们都实现了共同的接口Result,都实现了execute方法 他们体现了策略模式,具体Result类型参见:struts-default ...

  3. Struts2之Result详解

    上一篇我们把Struts2中的Action接收参数的内容为大家介绍了,本篇我们就一起来简单学习一下Action的4种Result type类型,分为:dispatcher(服务端页面跳转):redir ...

  4. struts2 学习01

    知识补充: Java 平台有三个版本,这使软件开发人员.服务提供商和设备生产商可以针对特定的市场进行开发: * Java SE(Java Platform,Standard Edition).Java ...

  5. struts2学习笔记之二:基本环境搭建

    学习struts2有一段时间了,作为一个运维人员学习的时间还是挺紧张的,写这篇文件为了方便以后复习时使用 环境: MyEclipse 10 tomcat6 jdk1.6   首先建立一个web项目,并 ...

  6. [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  8. Struts2学习笔记⑧

    今天是Struts2学习笔记的最后一篇文章了.用什么做结尾呢,这两天其实还学了很多东西,没有记录下,今天就查漏补缺一下. 文件上传与下载.FreeMarker以及昨天没做完的例子 文件上传与下载 文件 ...

  9. Struts2学习笔记①

    Struts2 学习笔记① 所有的程序学习都从Hello World开始,今天先跟着书做一个HW的示例. Struts2是一套MVC框架,使用起来非常方便,接触到现在觉得最麻烦的地方是配置文件.我的一 ...

随机推荐

  1. Iptables详解七层过滤

    <Iptables详解七层过滤> 一.防火墙简介 防火墙其实就是一个加固主机或网络安全的一个设备或者软件而已,通过防火墙可以隔离风险区域与安全区域的连接,同时不会妨碍风险区域的访问.当然需 ...

  2. kafka原理和实践(六)总结升华

    系列目录 kafka原理和实践(一)原理:10分钟入门 kafka原理和实践(二)spring-kafka简单实践 kafka原理和实践(三)spring-kafka生产者源码 kafka原理和实践( ...

  3. C语言之循环次数

    #include<stdio.h>int main(){int num,count=0,i=0,ret=0;scanf("%d",&num);while(num ...

  4. 【原创】python基于大数据现实双色球预测

    前提准备:利用sql筛选出每个球出现概率最高的前5个数 原理:先爬出所有的历史数据,然后模拟摇奖机出球的机制并大量模拟计算,直到出现列表中的某一个数后即停 注意事项:由于计算过程数据量很大,需要加入内 ...

  5. poj1611 解题报告

    并查集学习过之后做了几道相关联系,这里贴出1611 The Suspects Time Limit: 1000MS   Memory Limit: 20000K Total Submissions:  ...

  6. PHP面向对象之const常量修饰符

    在PHP中定义常量是通过define()函数来完成的,但在类中定义常量不能使用define(),而需要使用const修饰符.类中的常量使用const定义后,其访问方式和静态成员类似,都是通过类名或在成 ...

  7. TCP/IP 协议栈 ------ ICMP

    I C M P经常被认为是 I P层的一个组成部分.它传递差错报文以及其他需要注意的信息.I C M P报文通常被I P层或更高层协议( T C P或U D P)使用.一些I C M P报文把差错报文 ...

  8. 上班打卡--- 通过批处理命令执行jar文件来记录上班时间

    如果 一个程序员要记录自己上班工作时间的话 ,还需要靠手动去记录, 那就有点 不够范了, 程序员自然要有自己的极客范儿 , 下面就跟我一起来(zhuangbi); 先列一下整体的步骤: 1: 先做一个 ...

  9. php计算多个集合的笛卡尔积实例详解

    笛卡尔积 笛卡尔积是指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X*Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员. 假设集合A ...

  10. CentOS安装Nginx 报错“configure: error: the HTTP rewrite module requires the PCRE library”解决办法

    错误提示: ./configure: error: the HTTP rewrite module requires the PCRE library.      yum install gcc gc ...