1. 程式人生 > >SSH整合之Struts.xml 常用的引數

SSH整合之Struts.xml 常用的引數

Struts.xml常用的引數

1、<include>

利用include標籤,可以將一個struts.xml配置檔案分割成多個配置檔案,然後在struts.xml中使用<include>標籤引入其他配置檔案。

比如一個購物程式,可以把使用者配置、商品配置、訂單配置分別放在3個配置檔案user.xml、goods.xml和order.xml中,然後在struts.xml中將這3個配置檔案引入:

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.3.dtd">

<struts>

    <include file="user.xml"/>
    <include file="goods.xml"/>
    <include file="order.xml"/>

</struts>

user.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.3.dtd">

<struts>

  <package name="cost" namespace="/cost" extends="struts-default">
     <action name="findEmp" class="findEmpAction" method="load">
 <result name="success">login.jsp</result>
     </action>
    </package>

</struts>

2、<constant>

所有在struts.properties檔案中定義的屬性,都可以配置在struts.xml檔案中。而在struts.xml中,是通過<constant>標籤來進行配置的:

<?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.3.dtd">

<struts>

<!--設定開發模式-->
 <constant name="struts.devMode" value="true"/> 
<!--設定編碼形式為utf-8-->
 <constant name="struts.i18n.encoding" value="utf-8"/> 
<!--省略其他配置資訊-->
</struts>

3.<package>

在Struts2框架中是通過包來管理配置資訊的.

  <!--name:包名,作為其它包應用本包的標記 
	 extends:通常配置struts.xml的時候,都繼承一個名為“struts-default.xml”的包,這是struts2中內建的包,非必須
	 namespace:設定包的名稱空間,主要是針對大型專案中Action的管理,更重要的是解決Action重名問題,因為不在同一個名稱空間的Action可以使用相同的Action名的,非必須
	 Struts2中如果沒有為某個包指定名稱空間,該包使用預設的名稱空間,預設的名稱空間總是""。
         當設定了名稱空間為“/”,即指定了包的名稱空間為根名稱空間時,此時所有根路徑下的Action請求都會去這個包中查詢對應的資源資訊。
         假若前例中路徑為http://localhost:8080/login.action則所有http://localhost:8080/*.action都會到設定為根名稱空間的包中尋找資源。
         -->
	 <!-- 如果不用namespace,則訪問的URL為http://localhost:8080/findEmp.action-->
	  <package name="cost" extends="struts-default">
	 <action name="findEmp" class="findEmpAction" method="load">
	 	<result name="success">index.jsp</result>
	 </action>
	</package> 

        <!-- 如果用namespace,則訪問的URL為http://localhost:8080/cost/findEmp.action-->
       <package name="cost" namespace="/cost" extends="struts-default"> 
       <action name="findEmp" class="findEmpAction" method="load">
        <result name="success">index.jsp</result>
     </action>
    </package>


4.<action>與<result>

<package name="cost" namespace="/cost" extends="struts-default">
	 <!-- action中
	    由於使用Spring來管理Action,因此需要通過Spring容器來建立Action,因此class屬性指定的是元件ID。
	    name:請求的Action名稱
	    class:Action處理類對應具體路徑,非必須寫
	    method:指定Action中的方法名,如果沒有指定method則預設執行Action中的execute方法,非必須寫
	    converter:指定Action使用的型別轉換器,非必須寫
	    -->
	 <action name="findEmp" class="findEmpAction" method="load">
	 	<!-- result中
	 	 name:對應Action返回邏輯檢視名稱,預設為success,非必須寫
		 type:返回結果型別,預設為dispatcher,非必須寫
                下面語句意為:返回success,就跳轉到index.jsp頁面
                -->
	 	<result name="success">index.jsp</result>
	 </action>
	</package>
4.1隨著result的增加,struts.xml檔案也會隨之變得越來越複雜。那麼就可以使用萬用字元來簡化配置:

例如下面這個案例:

public class Test {
    public String test1(){
        return "result1";
    }
     
    public String test2(){
        return "result2";
    }
     
    public String test3(){
        return "result3";
    }
}

Struts.xml的配置為:

<package name="cost" namespace="/cost" extends="struts-default">
    <action name="test*" class="findEmpAction"{1}">
        <result name="result{1}">/result{1}.jsp</result>
    </action>
</package>