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

来源:互联网 发布:camhi监控软件下载 编辑:程序博客网 时间:2024/04/28 10:00

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





1 0
原创粉丝点击