1.在Struts2中,当有多个Action使用同一个结果集时,则可以使用全局结果集(GlobalResult),这样就不用在每一个使用同一个结果集的action里面都添加一个result,可以减少代码量,优化struts.xml配置文件,接下来将用一个很简单的小例子来介绍全局结果集。

2.首先,新建一个struts2项目,打开index.jsp页面,编码格式改为utf-8,在对里面的代码进行修改,修改后代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><ol><li><a href="user/user?type=1">返回success</a></li><li><a href="user/user?type=2">返回error</a></li><li><a href="user/user?type=3">返回global 结果集</a></li><li><a href="other/other">other,继承user包</a></li></ol></body>
</html>

对应的struts.xml配置文件如下:

<package name="user" namespace="/user" extends="struts-default"><global-results><result name="mainpage">/user_mainpage.jsp</result></global-results><action name="user" class="com.gk.UserAction"><result name="success">/user_success.jsp</result><result name="error">/user_error.jsp</result></action>
</package>

action所对应的Action类,UserAction类,代码如下:

package com.gk;import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport{private int type;public int getType() {return type;}public void setType(int type) {this.type = type;}public String execute() {if (type == 1) {return "success";} else if (type == 2) {return "error";} else {return "mainpage";}}
}

其中UserAction类中返回的结果集有"mainpage",而在struts.xml配置文件中的user的action中并没有"mainpage"的result,在这时就会使用全局的结果集(global-result),这个结果集中有"mainpage"的result。

3.当其它不同的package需要使用这个全局的result时,则需要使用<package>这个标签中的extends属性来指定包含全局的package就可以了。

例如,有个OtherAction.java文件,代码如下:

package com.gk;import com.opensymphony.xwork2.ActionSupport;public class OtherAction extends ActionSupport{public String execute(){return "mainpage";}
}

对应的struts.xml配置文件中的配置如下:

<package name="other" namespace="/other" extends="user"><action name="other" class="com.gk.OtherAction"><result>/other.jsp</result></action>
</package>

这时user这个package中的结果集就可以被other这个package中的action所使用了,并不会跳转到other.jsp页面去,而是跳转到全局结果集中的user_mainpage.jsp页面上去了。

4.接下来附上上面没有的代码,其中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"></constant><constant name="struts.devMode" value="true"></constant><package name="user" namespace="/user" extends="struts-default"><global-results><result name="mainpage">/user_mainpage.jsp</result></global-results><action name="user" class="com.gk.UserAction"><result name="success">/user_success.jsp</result><result name="error">/user_error.jsp</result></action></package><package name="other" namespace="/other" extends="user"><action name="other" class="com.gk.OtherAction"><result>/other.jsp</result></action></package>
</struts>

user_success.jsp页面代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'user_success.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body>返回成功</body>
</html>

user_error.jsp页面代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'user_error.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body>返回错误</body>
</html>

user_mainpage.jsp页面代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'user_mainpage.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body>返回主页面</body>
</html>

other.jsp页面代码如下,根据配置文件,是不会跳转到这个页面的:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'other.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body>其他页面</body>
</html>

4.这个简单的小项目结构,如下图所示:

部署该项目到Tomcat服务器上,开启Tomcat服务器,运行后如下图所示:

分别点击上图中4个超链接,依次效果如下:

在本包内,返回全局结果集。

在其它包里,继承user包,返回全局结果集。

5.以上内容仅供大家学习参考,谢谢!

Struts2中的全局结果集相关推荐

  1. 【Struts2学习笔记(1)】Struts2中Action名称的搜索顺序和多个Action共享一个视图--全局result配置...

    一.Action名称的搜索顺序 1.获得请求路径的URI,比如url是:http://server/struts2/path1/path2/path3/test.action 2.首先寻找namesp ...

  2. Struts2中带参数的结果集

    1.在Struts2中带参数的结果集,即向结果集传参.struts2中有转发和重定向到某个视图,其中转发的过程在服务端完成,这个过程共享一个value stack(值栈),客户端并不知道页面跳转到了哪 ...

  3. Struts2中动态的指定返回的结果集

    1.在Struts2中,可以在struts.xml配置文件中动态的指定返回的结果集.用${属性名}的方式取得Action类中的属性,在服务端判断好相应的跳转路径,然后存到变量里,然后再在struts. ...

  4. 【转】Struts2中转换Date类型的问题

    好久没有写Blog了,最近似乎变懒了.今天上班没有很多事,于是把之前遇到的一个问题记录下来. Web开发会涉及到很多类型转换的情况.我们知道,页面中的一切值都是字符串类型,而到后台,我们需要的可能是其 ...

  5. crm创建和编辑全局选项集

    一个选项集就是可包含在一个实体中的某种类型的字段.它定义一组选项.当一个选项集显示在窗口中时,将使用下拉列表控件.当在 Advanced Find 中显示时,则使用选择列表控件.有时,开发者将选项集称 ...

  6. struts2中result的type跳转类型总结

    1,局部result和全局result 局部result:包含在Action定义中, result属性是一个Action的子元素.其作用范围只能在本Action中. 全局result:使用<gl ...

  7. 操作系统中的全局页面置换算法

    1 全局页面置换算法 以上页面置换算法都是针对单一的应用程序的页面置换算法, 且有一个前提, 就是给单一应用程序分配的物理页帧数量是一定的. 现实中, 给一个应用程序分配的物理页帧数, 该程序产生的缺 ...

  8. Struts2源码学习(一)——Struts2中的XWork容器

    接下来记录几篇学习Struts2源码的文章,希望能温故而知新. 目录: 1, 为什么引入容器 2,容器的定义 3,对象创建分析 4,依赖注入分析 5,对象创建和依赖注入的实现 首先,了解为什么框架要引 ...

  9. Struts2中的类型转换

    1.     Struts2中的类型转换 我们知道通过HTTP提交到后台的数据,都是字符串的形式,而我们需要的数据类型当然不只字符串类型一种.所以,我们需要类型转换! 在Struts2中,类型转换的概 ...

最新文章

  1. Python中最常用十大图像处理库详细介绍
  2. 责任链(Chain of Responsibility Pattern)
  3. ATEN命令--北大青鸟benet课程
  4. mysql两个字段相减_MySQL 中NULL和空值的区别?
  5. 1001. A+B Format
  6. android 测试人员测试时使用release版本还是debug版本_为什么做软件测试
  7. CSRF跨站请求伪造攻击
  8. 前一天还在聊抢票,第二天就被裁了,年底是互联网行业的寒冬吗?
  9. 算法求解中的变量、数组与数据结构(STL 中的容器)
  10. Stroustrup 谈 C++ 11的新特性
  11. panoramic image view 全景照片查看器
  12. #九、江恩、四维理论方法从古人那里得到的启发(一)来自星空的启示
  13. 利用高效的css 提高你的开发效率~(下)
  14. Learning Compact Binary Descriptors with Unsupervised Deep Neural Networks
  15. S3C2440之液晶屏LCD驱动
  16. 一篇文章让你从JAVA零基础入门`OOP`编程12.19
  17. 4米乘以12米CAD图_CAD绘图比例、出图比例、打印比例讲解!!!
  18. veket linux能运行qq么,【veket系统】Veket Linux系统下载 v8.07 官方正式版-开心电玩...
  19. biopython:探究新型冠状病毒:提取GenBank文件和蛋白质水平分析。这到底是一个什么样的病毒?是单链还是双链,是DNA病毒还是RNA病毒?
  20. 栈回溯技术arm_v5t_le版

热门文章

  1. Docker04-镜像
  2. [bzoj1008] [HNOI2008]越狱
  3. mysql获取表的行号
  4. 【转】Python学习路线
  5. 《我们不一样》团队项目用户验收评审
  6. 决策树学习笔记整理【转】
  7. Open cup #2
  8. 增量式编码器定时器配置和速度计算的处理方法
  9. UVM序列篇之一:新手上路
  10. YUI Compressor