struts2中struts.xml中的屬性值含義

本章分析struts2中struts.xml某些屬性的具體含義

先給出上章Struts2簡單構建中的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>
	
    <package name="wul" namespace="/" extends="struts-default">
	
		<action name="product-input" class="com.opensymphony.xwork2.ActionSupport" method="execute">
			<result>/WEB-INF/pages/input.jsp</result>
		</action>
		
		<action name="product-save" class="com.wul.strust2.helloworld.Product" method="save">
			<result name="details">/WEB-INF/pages/details.jsp</result>
		</action>
		
    </package>

</struts>


package:  包,struts2使用package,來組織模塊

name 屬性: 必須,用於其它的包引用當前包


extends :當前包繼承哪個包,繼承的,即可以繼承其中所有的配置,通常情況下繼承struts-default ,struts-default這個包在struts-default.xml文件中定義 


namespace="/java"的話,請求要在servletPath前加/java :  http://localhost:8080/contextPath/namespace/actionName.action


action: 一個struts2的請求就是一個action

name:對應一個struts2的請求的名字(或對一個servletPath,但去除‘/’和擴展名),不包含拓展名

class 的默認值爲:com.opensymphony.xwork2.ActionSupport

method:的默認值爲:execute  , 可以自定義方法,如”product-save“action中的save方法

result:結果,表示action方法執行後可能返回的一個結果,所以一個action節點可能會有多個result子節點,多個result子節點使用name來區分

name:標識一個result,和action方法的返回值相對應,默認值爲success

type:表示結果的類型,默認值是dispatch

result的type的屬性值在struts-default包的result-types節點的那麼屬性中定義,常用的有
>dispatcher(默認的) 轉發,同servlet中的轉發

>redirect  重定向

>redirectAction 重定向到一個action

>chain 轉發到一個action 

重定向:以前的request中存放的變量全部失效,並進入一個新的request作用域

轉發:以前的request中存放的變量不會失效,就像把兩個頁面拼到了一起

下面給一個不同result的type的實例

TestAction.java

package com.zucc.wul.cn.action;

public class TestAction {
	public String execute(){
		System.out.println("TestAction's execute....");
		return "success";
	}
}

TestResultAction.java

package com.zucc.wul.cn.action;

public class TestResultAction {
	private int number;	
	
	public int getNumber() {
		return number;
	}
	public void setNumber(int number) {
		this.number = number;
	}

	public String execute(){
		String result=null;
		//根據請求參數number的值,返回對應的JSP頁面
		//1.若number除以3餘0,返回success.jsp頁面
		if(number ==  0)
			result = "success";
		//2.若number除以3餘1,返回login.jsp頁面
		if(number ==  1)
			result = "login";
		//3.若number除以3餘2,返回index.jsp頁面
		if(number ==  2)
			result = "index";
		if(number ==  3)
			result = "index2";
		return result;
	}
}
index.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Hello</title>
</head>
<body>
	<a href="product-input.action">Product Input</a>
</body>
</html>
Register.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Insert title here</title>
</head>
<body>
	<form action="testResult">
		<input type="text"  name="number"/>
		<input type="submit" value = "submit"/> 
	</form>
	
</body>
</html>
Success.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Insert title here</title>
</head>
<body>
	註冊成功
</body>
</html>
Fail.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Insert title here</title>
</head>
<body>
	註冊失敗
</body>
</html>

web.xml

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="struts-default.xml" />  
	
	<package name="default" extends="struts-default">
		<action name ="testResult" class="com.zucc.wul.cn.action.TestResultAction">
			<result name="success" type="dispatcher">/Success.jsp</result>
			<result name="login" type="redirect">/Fail.jsp</result>
			
		<!--  				
			<result name="index" type="redirectAction">
				<param name="actionName">testAction</param>
				<param name="namespace">/atguigu</param>
			</result>
		-->
		<!--通過redirect的響應類型也可以便捷的實現redirectAction的功能 -->	
		<result name="index" type="redirect">/atguigu/testAction.action</result>
			
			 <!-- 轉發到一個action只能這樣寫 -->
			<result name="index2" type="chain">
				<param name="actionName">testAction</param>
				<param name="namespace">/atguigu</param>
			</result>
			
		</action>		
	</package>
	
	
	<package name="testPackage" namespace="/atguigu" extends="struts-default">
		<action name="testAction" class="com.zucc.wul.cn.action.TestAction">
			<result>/Success.jsp</result>
		</action>
	</package>
	
</struts>
redirectAction 重定向到一個action,需額外在定義一個package,其方法可以到struts/docs/docs/home.html裏查詢

注意,在result不同type的寫法中,通過redirect的響應類型也可以便捷的實現redirectAction的功能,但轉發到一個action只能這樣寫



發佈了1 篇原創文章 · 獲贊 7 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章