Struts2中的全局结果集
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中的全局结果集相关推荐
- 【Struts2学习笔记(1)】Struts2中Action名称的搜索顺序和多个Action共享一个视图--全局result配置...
一.Action名称的搜索顺序 1.获得请求路径的URI,比如url是:http://server/struts2/path1/path2/path3/test.action 2.首先寻找namesp ...
- Struts2中带参数的结果集
1.在Struts2中带参数的结果集,即向结果集传参.struts2中有转发和重定向到某个视图,其中转发的过程在服务端完成,这个过程共享一个value stack(值栈),客户端并不知道页面跳转到了哪 ...
- Struts2中动态的指定返回的结果集
1.在Struts2中,可以在struts.xml配置文件中动态的指定返回的结果集.用${属性名}的方式取得Action类中的属性,在服务端判断好相应的跳转路径,然后存到变量里,然后再在struts. ...
- 【转】Struts2中转换Date类型的问题
好久没有写Blog了,最近似乎变懒了.今天上班没有很多事,于是把之前遇到的一个问题记录下来. Web开发会涉及到很多类型转换的情况.我们知道,页面中的一切值都是字符串类型,而到后台,我们需要的可能是其 ...
- crm创建和编辑全局选项集
一个选项集就是可包含在一个实体中的某种类型的字段.它定义一组选项.当一个选项集显示在窗口中时,将使用下拉列表控件.当在 Advanced Find 中显示时,则使用选择列表控件.有时,开发者将选项集称 ...
- struts2中result的type跳转类型总结
1,局部result和全局result 局部result:包含在Action定义中, result属性是一个Action的子元素.其作用范围只能在本Action中. 全局result:使用<gl ...
- 操作系统中的全局页面置换算法
1 全局页面置换算法 以上页面置换算法都是针对单一的应用程序的页面置换算法, 且有一个前提, 就是给单一应用程序分配的物理页帧数量是一定的. 现实中, 给一个应用程序分配的物理页帧数, 该程序产生的缺 ...
- Struts2源码学习(一)——Struts2中的XWork容器
接下来记录几篇学习Struts2源码的文章,希望能温故而知新. 目录: 1, 为什么引入容器 2,容器的定义 3,对象创建分析 4,依赖注入分析 5,对象创建和依赖注入的实现 首先,了解为什么框架要引 ...
- Struts2中的类型转换
1. Struts2中的类型转换 我们知道通过HTTP提交到后台的数据,都是字符串的形式,而我们需要的数据类型当然不只字符串类型一种.所以,我们需要类型转换! 在Struts2中,类型转换的概 ...
最新文章
- Python中最常用十大图像处理库详细介绍
- 责任链(Chain of Responsibility Pattern)
- ATEN命令--北大青鸟benet课程
- mysql两个字段相减_MySQL 中NULL和空值的区别?
- 1001. A+B Format
- android 测试人员测试时使用release版本还是debug版本_为什么做软件测试
- CSRF跨站请求伪造攻击
- 前一天还在聊抢票,第二天就被裁了,年底是互联网行业的寒冬吗?
- 算法求解中的变量、数组与数据结构(STL 中的容器)
- Stroustrup 谈 C++ 11的新特性
- panoramic image view 全景照片查看器
- #九、江恩、四维理论方法从古人那里得到的启发(一)来自星空的启示
- 利用高效的css 提高你的开发效率~(下)
- Learning Compact Binary Descriptors with Unsupervised Deep Neural Networks
- S3C2440之液晶屏LCD驱动
- 一篇文章让你从JAVA零基础入门`OOP`编程12.19
- 4米乘以12米CAD图_CAD绘图比例、出图比例、打印比例讲解!!!
- veket linux能运行qq么,【veket系统】Veket Linux系统下载 v8.07 官方正式版-开心电玩...
- biopython:探究新型冠状病毒:提取GenBank文件和蛋白质水平分析。这到底是一个什么样的病毒?是单链还是双链,是DNA病毒还是RNA病毒?
- 栈回溯技术arm_v5t_le版