1. 程式人生 > 程式設計 >Java struts2 package元素配置及例項解析

Java struts2 package元素配置及例項解析

package 元素的所有屬性及對應功能:

Attribute Required Description
name yes key to for other packages to reference ---包名稱,用來讓別的包繼承時使用不能有重複
extends no inherits package behavior of the package it extends -----當前包所要繼承的父包,繼承之後,當前包擁有父包中所定義的任意類、攔截器等
namespace no 用於區分包中相同的類
abstract no declares package to be abstract (no action configurations required in package)定義當前包為一個抽象的包也就是說不能有action元素在當前包中

例子:

假如我有以下的配置段落

<struts>
<package name="p1" extends="struts-default">
  <action name="login" class="com.example.action.Login">
  <result>/success.jsp</result>
  </action>

<action name="login1" class="com.example.action.Login">
  <result>/success.jsp</result>
  </action>

</package>

<package name="p2" extends="struts-default" namespace="/testNameSpace">
  <action name="login" class="com.example.action.Login">
  <result>/success.jsp</result>
  </action>
</package>
</struts>

說明:

a、 包p1沒有定義namespace,說明p1用的是預設空間""

現在有下面的請求:

1、/工程名/login.action

------這個請求對應p1包下的action name=login

2、/工程名/testNameSpace/login.action

-----這個請求對應p2包下的action name=login

3、/工程名/testNameSpace/login1.action

----這個請求是請求p2包下的資訊的,如果struts在檢索了p2包下的所有action後沒有檢索到當前請求的login1,這時struts會檢索前一個名稱空間,這裡是預設空間下是否有當前請求,檢查發現存在login1就得到當前檢索

這裡我有個個人的建議:

無論你的namespace配置或者沒配置,也無論配置啥樣,你在寫跳轉的url的時候請你也把

‘/工程名/'帶上,寫成這樣:/工程名/名稱空間1/名稱空間2/actionName.action這樣寫能保證路徑的正確性,當然如果你在寫跳轉的時候不發暈,可以視你的配置情況加或者不加這個!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。