1.关于Result我们首先来学习一下结果类型 result type。

Struts2 学习笔记 10 Result部分 part1_struts

先来看struts.xml.

struts.xml

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
<constant name="struts.devMode" value="true" />
    <package name="default" namespace="/" extends="struts-default">
    
		<action name="r1">
			<result type="dispatcher">
				/r1.jsp
			</result>
		</action>
       <action name="r2">
			<result type="redirect">
				/r2.jsp
			</result>
		</action>
		<action name="r3">
			<result type="chain">
				r1
			</result>
		</action>
		<action name="r4">
			<result type="redirectAction">
				r2
			</result>
		</action>
    </package>

</struts>

result的默认类型是dispatch,用于跳转到一个视图。

 

redirect可以进行跳转到一个新的页面。

这两者的区别可以这么解释一般注册的页面比如说提交到register.action注册完信息以后如果不跳转  用户可能会一直刷新这个页面 如果设计不好的程序 就会一直重复注册,注册完redirect出去 转到别的没有业务处理的页面只给提示一下注册成功。

<result type="chain">用于跳转到其他的action。若要访问其他包的action,可以用如下写法

<result name="r3" type="chain"> 
    <param name="actionName">重定向的Action名</param> 
     <param name="namespace">重定向Action所在的名字空间</param> 
</result> 

<result type="redirectAction">用于直接跳转到其他action。

  2.接下来通过一个小项目讲义下Global Result 全局结果集。

Struts2 学习笔记 10 Result部分 part1_struts_02

下图是主页

Struts2 学习笔记 10 Result部分 part1_重定向_03

有四个链接,内容是Struts2 学习笔记 10 Result部分 part1_xml_04

传递一个参数type 分别是 1 2 3.在UserAction.java里定义了一个type变量。当type为1返回“success”,为2返回“error”,为其他情况返回“mainpage”。

UserAction.java

 

package com.tfj.struts2.action;

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;
	}
	@Override
	
	public String execute() throws Exception {
		if(type==1) return "success";
		else if(type==2) return "error";
		else return "mainpage";
	}
	
}

struts.xml

 

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
<constant name="struts.devMode" value="true" />
    <package name="user" namespace="/user" extends="struts-default">
    	<global-results>
            <result name="mainpage">
            /mainpage.jsp
            </result>
        </global-results>
		
		<action name="user" class="com.tfj.struts2.action.UserAction" >
		
			<result name="success">
				/success.jsp
			</result>
			<result name="error">
				/error.jsp
			</result>
		</action>
       
    </package>
    <package name="admin" namespace="/admin" extends="user">
    	<action name="admin" class="com.tfj.struts2.action.UserAction" >
    		<result name="success">
				/admin.jsp
			</result>
    	</action>
    </package>

</struts>


返回的值为success 和error的情况都很好理解,当type为3时返回mainpage,但是在对应的action里并没有一个result叫mainpage。这时候就会去访问global result 。这种方式解决了假如有很多action都要去访问同一个地方这样我们把他们写到同一个Global result 减少配置量。

 

再看<package name="admin" namespace="/admin" extends="user">
    <action name="admin" class="com.tfj.struts2.action.UserAction" >
    <result name="success">
/admin.jsp
</result>
    </action>
    </package>

这段代码访问admin/admin?type=3时,也会访问到mainpage,这是由于admin包extends user包,这样就可以访问它的global result。


项目文件  Result part1.rar