Struts中對通配符的配置說明

在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="struts_part_1" namespace="/" extends="struts-default">
		<action name="login" class="com.xuning.action.LoginAction">
			<result name="success">/WEB-INF/success.jsp</result>
			<result name="error">/WEB-INF/error.jsp</result>
		</action>
		<!-- 約定大於規則 -->
		<action name="*_*" class="com.xuning.action.{1}Action" method="{2}">
			<!-- 默認不謝的話就是success串,而不是error,所以其他的應該在配置文件裏面去寫明
				否則會出現錯誤,{}內的數字分別代表第幾個通配符
			 -->
			<result>/WEB-INF/{1}_{2}_success.jsp</result>
			<result name="error">/WEB-INF/error.jsp</result>
		</action>
	</package>
</struts>
在上面的實例中,首先要引入dtd文件,然後根據dtd語法進行配置,有這麼幾個重要的東西,package,action,和result,第一個是包,這個是完全可以類比java中的包的概念的,說白了就是起到了一個分隔的概念,然後是action,這個其實就是action的一個映射關係,這麼幾個屬性,name就是要在客戶端訪問的名稱,這個名稱就是直接指向控制器的,而這個名字是自定義的,那又怎麼知道是在應用中是哪一個具體的控制器呢,當然還有一個class屬性在一起,這個就是具體的指向應用中的哪一個控制器,這樣就形成了一個最爲基本的映射關係,然後如果還想指定在控制器的哪一個具體的方法來驚醒處理的話,還可以去使用method屬性進行指定,其實系統默認的是execute方法,執行到方法之後距必須要返回一個字符串,這個字符串非常重要,就是給result的result需要指定一個name值,然後result標籤內部指定一個視圖路徑,標籤的name屬性就是和控制器返回的字符串需要一的對應,如果對應上就要直接進入到那一個人視圖裏面,反之找不到就會是404錯誤,而且result還有一個默認name值就是success,不寫便是。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章