Struts2名稱空間組態和解釋


Struts 2的名稱空間是一個新的概念,用來處理多個模組。由下式給出一個名稱空間的每個模組。此外,它還可以用來避免位於不同的模組相同的操作名稱之間的衝突。

看下面的一張圖來了解一個URL匹配Struts 2的動作名稱空間。

namespace map url

1. 名稱空間組態

讓我們通過一個Struts2的名稱空間組態的例子來了解它是如何與URL和檔案夾相匹配。

P.S 包中的「name」不會影響結果,只是給一個有意義的名字。

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<package name="default" namespace="/" extends="struts-default">
		<action name="SayWelcome">
			<result>/pages/welcome.jsp</result>
		</action>
	</package>

	<package name="common" namespace="/common" extends="struts-default">
		<action name="SayWelcome">
			<result>/common/pages/welcome.jsp</result>
		</action>
	</package>

	<package name="user" namespace="/user" extends="struts-default">
		<action name="SayWelcome">
			<result>/common/user/welcome.jsp</result>
		</action>
	</package>
</struts> 

Struts 2的動作名稱空間對映到檔案夾結構。

namespace map folder

2. JSP檢視頁面

3 JSP頁面檢視具有相同的檔案名,但是在不同的模組位置。

根 –  pages/welcome.jsp

<html>
<head>
<title>Struts2名稱空間範例 - tw511.com</title>
</head>
<body>
	<h1>Struts2名稱空間範例</h1>
	<h4>Welcome - namespace = "root"</h4>
</body>
</html>

Common 模組 –  common/pages/welcome.jsp

<html>
<head>
<title>Struts2名稱空間範例 - tw511.com</title>
</head>
<body>
	<h1>Struts2名稱空間範例</h1>
	<h4>Welcome - namespace = "common"</h4>
</body>
</html>

User 模組 –  user/pages/welcome.jsp

<html>
<head>
<title>Struts2名稱空間範例 - tw511.com</title>
</head>
<body>
	<h1>Struts2名稱空間範例</h1>

	<h4>Welcome - namespace = "user"</h4>
</body>
</html>

3. 對映 – 如何工作?

範例 1
URL : http://localhost:8080/Struts2Example/SayWelcome.action

將匹配根名稱空間。

	<package name="default" namespace="/" extends="struts-default">
		<action name="SayWelcome">
			<result>/pages/welcome.jsp</result>
		</action>
	</package>

這會顯示 pages/welcome.jsp 頁面的內容

範例 2
URL : http://localhost:8080/Struts2Example/common/SayWelcome.action
這會匹配 common 名稱空間的內容:

	<package name="common" namespace="/common" extends="struts-default">
		<action name="SayWelcome">
			<result>/common/pages/welcome.jsp</result>
		</action>
	</package>

這會顯示 common/pages/welcome.jsp 頁面的內容

範例 3
URL : http://localhost:8080/Struts2Example/user/SayWelcome.action
這會匹配 common 名稱空間的內容:

<package name="user" namespace="/user" extends="struts-default">
	<action name="SayWelcome">
		<result>/common/user/welcome.jsp</result>
	</action>
</package>

這會顯示 user/pages/welcome.jsp 頁面的內容.

參考

  1. Struts2名稱空間組態參考

程式碼下載:http://pan.baidu.com/s/1hqe1nZe