Struts2(七)global-results 和 extends 和动态结果集详解
2016-12-28 22:35
447 查看
一、global-results
解析:根据字面意思可以看出这个标签的作用,该标签的中文意译叫做”全局结果集“;当一个大的项目开发中,项目经理就安排任务成几个模块进行开发,其中有限页面是共同的,也就说Action返回的值是一样的,这样子的话就不用每个模块都进行相同的配置了,不仅仅体现出编码的整体性,也减少了代码的冗余性,这时候我们就可以定义一个共同的包来放置相同的配置了。1、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> <!-- <include file="login.xml"/> --> <!-- <constant name="struts.enable.DynamicMethodInvocation" value="false" /> --> <!-- 设置为开发者模式 修改之后不需要重启服务器 --> <constant name="struts.devMode" value="false" /> <!-- 全局配置的结果集 --> <package name="user" namespace="/user" extends="struts-default"> <global-results> <result name="mainPage">/jsp/mainPage.jsp</result> </global-results> <action name="user" class="com.flx.actions.UserAction" method="testUser"> <result name="page1">/jsp/page1.jsp</result> <result name="page2">/jsp/page2.jsp</result> </action> </package>
<!--使用到了继承-->
<package name="user1" namespace="/user1" extends="user"> <action name="user1" class="com.flx.actions.UserAction1" method="testUser"> <result name="page11">/jsp/page1.jsp</result> <result name="page22">/jsp/page2.jsp</result> </action> </package>
<!-- 动态结果集 --> <package name="user3" namespace="/user3" extends="struts-default"> <action name="user3" class="com.flx.actions.UserAction3" method="testUser"> <result >${resultType}</result> </action> </package> </struts>
2、JSP 【hello.jsp】页面
<h2>(5)全局结果值demo</h2> 1、<a href="<%=path %>/user/user?type=1">返回有映射的页面1</a> 2、<a href="<%=path %>/user/user?type=2">返回有映射的页面2</a> 3、<a href="<%=path %>/user/user?type=3">全局结果值返回页面</a> 3、<a href="<%=path %>/user/user1?type=4">全局结果值返回页面</a>
3、Action处理类
package com.flx.actions; import com.opensymphony.xwork2.ActionSupport; /** * * @author FuLX * * @2016-12-28下午8:59:21 * * 功能:全局结果集 案例寿命 */ public class UserAction extends ActionSupport { private static final String FINAL_FLX_PAGE_01 = "page1"; private static final String FINAL_FLX_PAGE_02 = "page2"; private static final String FINAL_FLX_PAGE_03 = "mainPage"; private int type;//页面进来的type值有:1、2、3、4 public String testUser() { //条件值为1时候跳转页面 if (this.type == 1) { System.out.println("页面1"); return FINAL_FLX_PAGE_01; //条件值为2时候跳转页面 } else if (this.type == 2) { System.out.println("页面2"); return FINAL_FLX_PAGE_02; //条件值都不符合跳转页面 } else { System.out.println("其他页面"); return FINAL_FLX_PAGE_03; } } public int getType() { return type; } public void setType(int type) { this.type = type; } }
4、结果说明
4.1:用户选择【返回有映射的页面1】,回调转到page1.jsp页面,因为Action返回值在result中是有的。4.2:用户选择【返回有映射的页面2】,回调转到page2jsp页面,因为Action返回值在result中是有的。
4.1:用户选择【全局结果值返回页面】,回调转到page1.jsp页面,因为Action返回值在result中是有的。
4.1:用户选择【全局结果值返回页面】,因为Action返回值是mainPage,因为Action返回值在result中是没有的,有因为”user“包中有配置 global-results 标签;所以会跳到mainPage.jspy页面去。
二、extends 标签中属性的讲解
解答:就是在两个package中 默认是extends="struts-default",但是如果其中一个package想继承另外一个package时候,例如向继承name=''user"的package;就可以这样书写”extends="user"“;这样就会继承名字为”user“的package。注意:因为struts-defanlt配置文件非常复杂,这不需要我们去管理,是复杂但是用起来比较简单。三、动态结果集
package com.flx.actions;import com.opensymphony.xwork2.ActionSupport;
/**
*
* @author FuLX
*
* @2016-12-28下午8:59:21
*
* 功能:全局结果集 案例寿命
*/
public class UserAction3 extends ActionSupport {
private static final String FINAL_FLX_PAGE_01 = "/jsp/page1.jsp";
private static final String FINAL_FLX_PAGE_02 = "/jsp/page2.jsp";
private int type;
private String resultType;
public String testUser() {
if (this.type == 1) {
System.out.println("页面1");
this.resultType = FINAL_FLX_PAGE_01;
} else {
System.out.println("页面2");
this.resultType = FINAL_FLX_PAGE_02;
}
return "success";
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getResultType() {
return resultType;
}
public void setResultType(String resultType) {
this.resultType = resultType;
}
}
相关文章推荐
- spring+springmvc+mybatis链接多数据源
- 人脸检测----(java+opencv)
- 查找数字
- java 附近的人
- 举个小栗子解释java动态代理
- [置顶] JAVA项目四:邮件发送客户端
- Spring xml配置实例
- 理解Java中的弱引用
- Spring中的过滤组件自动扫描
- Spring中的过滤组件自动扫描
- 最新Spring下载网址
- Java基本数据类型
- java基础--集合(1)
- 异常处理之[Error: com.android.ide.common.process.ProcessException] Eclipse转AS后
- Java中获取当前系统年份
- spring jar包的作用
- JavaSript基础
- 二叉排序树的应用(java)
- 161216、使用spring的DefaultResourceLoader自定义properties文件加载工具类
- MyEclipse创建maven-web项目