Struts2(七)global-results 和 extends 和动态结果集详解

一、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;
	}

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值