Struts2中action訪問路徑配置

struts.xml的一些配置:html

Struts2中constant標籤的一些配置:java

.......................................web

<constant name="struts.convention.default.parent.package" value="cmcc-default" />
<constant name="struts.convention.package.locators" value="action" />
<constant name="struts.convention.result.path" value="/WEB-INF/jsp/"/>
<constant name="struts.convention.package.locators.basePackage" value="com.cmcc.bdp.action" />
<constant name="struts.i18n.encoding" value="utf-8" />
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>spring

.......................................apache

下面是一部分constant的講解:瀏覽器

 用了Convention插件來實現所謂的0配置,緩存

1 、(配置訪問的URL的默認的路徑).   <constant name="struts.convention.package.locators.basePackage" value="com.ZTest.web.action" />
這個屬性用於約定Action 類的根包(這個包是Java 類的包,而不是Struts.xml中配置的<package>節點) 
例如: 
在一個項目中有這樣一系列的Java 包,那麼當指定convention的這個屬性,Struts 框架就會在你訪問特定的URL時會自動的找到所要的請求的實現類。 
當你在瀏覽器中輸入:http://localhost:8080/XXX/HelloWorld.action ,Struts會自動的找到並執行com.ZTest.web.action.HelloWorldAction.java。 
當你在瀏覽器中輸入:http://localhost:8080/XXX/test/aaa.action ,Struts會自動的找到並執行com.ZTest.web.action.test.aaaAction.java類。 服務器

 

二、返回資源的結果路徑.    struts.convention.result.path=/WEB-INF/ruiri app

這個屬性用於約定Action類執行完畢之後返回資源的結果路徑,###必須以 "/" 開頭,  <constant name="struts.convention.result.path" value="/WEB-INF/jsp/"/>
例如: 
當你在瀏覽器中輸入:http://localhost:8080/HelloWorld.action ,Struts會自動的找到並執行com.ZTest.web.action.HelloWorldAction.java類,框架

並放回到/WEB-INF/ruiri/HelloWorld.jsp。 
當你在瀏覽器中輸入:http://localhost:8080/XXX/test/aaa.action ,Struts會自動的找到並執行com.ZTest.web.action.test.aaaAction.java類, ,並放回到WEB-INF/ruiri/test/HelloWorld.jsp 。 

 

3.    struts.convention.action.name.lowercase=false 
###是否將Action類轉換成小寫 
當一個類的類名是多個單詞組合起來的時候,例如 HelloWolrdAction.java,若是指定了這個屬性,則訪問的地址必須是:  HelloWorld.action,若是不是指定這個屬性則是:  helloworld.action 

 

4.    struts.convention.action.name.separator= 
這個屬性是約定當一個Java 類有多個單詞組合成的時候,映射的URL地址的時候訪問的格式的分隔符。 
若是不指定這個屬性,Struts默認的分隔符是 「-」,例如 HelloWorldAction 則訪問的URL 是Hello-World.action 
若是指定這個屬性是上面的格式,則是沒有分隔符,會按照Java 類名直接映射,例如 HelloWorldAction 則訪問的URL 是HelloWorld.action 

 

5.     struts.convention.default.parent.package=default 

這個屬性指定的是Strtus.xml中配置的 <package>節點的父節點。(有什麼用?可能就是用於定義全局的Result吧,這個本人也沒深刻的研究過) 

 

6.     struts.convention.package.locators=action  
肯定搜索包的路徑。只要是結尾爲action的包都要搜索。 
詳細講解一下這個屬性,由於我剛開始的時候被這個屬性搞暈了,但願個人解釋能幫助和我有過一樣疑問的友人。

 

例如:咱們有這樣一些類: 
com.ZTest.web.action.AAAAAction 
com.Ztest.web.action.BBBBAction 
com.Ztest.web.action.test/CCCCAction 
com.Ztest.web.action.test/DDDDAction 
com.Ztest.web.action.test/first/EEEEAction 
com.Ztest.web.action.test/first/FFFFAction 


若是,我設置這個屬性的值爲action 那麼咱們訪問這幾個類得URL就是 
http://localhost:8080/ZTest/AAAA.action 
http://localhost:8080/ZTest/BBBB.action 
http://localhost:8080/ZTest/test/CCCC.action 
http://localhost:8080/ZTest/test/DDDD.action 
http://localhost:8080/ZTest/test/first/EEEE.action 
http://localhost:8080/ZTest/test/first/FFFF.action 

而每一個URL對應的資源文件必須是下面的格式:(按照本文中的result.path配置的結果) 
/WEB-INF/ruiri/AAAA.jsp 
/WEB-INF/ruiri/BBBB.jsp 
/WEB-INF/ruiri/test/CCCC.jsp 
/WEB-INF/ruiri/test/DDDD.jsp 
/WEB-INF/ruiri/test/first/EEEE.jsp 
/WEB-INF/ruiri/test/first/FFFF.jsp 
也就是說: 

struts.convention.package.locators=action 就是至關於下面的解釋 
  類路徑                                                       命名空間(struts.xml中配置的<package>節點) 
com.ZTest.web.action.AAAAAction             ->    / 
com.ZTest.web.action.test.CCCCAction        ->    /test 
com.ZTest.web.action.test.first.EEEEAction ->    /test/first 


固然對應的資源的文件路徑就是: 
/WEB-INF/ruiri/AAAA.jsp 
/WEB-INF/ruiri/test/CCCC.jsp 
/WEB-INF/ruiri/test/first/EEEE.jsp 

區別: 
struts.convention.package.locators=action  
肯定搜索包的路徑。只要是結尾爲action的包都要搜索。 
struts.convention.package.locators.disable=false 
struts.convention.package.locators.basePackage=com.xxx.web.action 
basePackage按照默認不用配置,若是配置,只會找以此配置開頭的包。 
locators及locators.basePackage都是一組以逗號分割的字符串

 

Demo:

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC "-//ApacheSoftware Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

    <constant name="struts.convention.default.parent.package"value="cmcc-default" />

    <constant name="struts.convention.package.locators"value="action" />

    <constant name="struts.convention.result.path" value="/WEB-INF/jsp/"/>

    <constant name="struts.convention.package.locators.basePackage"value=‘XXX.XX.XXX.action’/>

    <constant name="struts.i18n.encoding" value="utf-8" />

    <constant name="struts.enable.DynamicMethodInvocation"value="true"/>

   

    <package name="cmcc-default" extends="convention-default">

        <!-- 基於paramsPrepareParamsStack,增長store interceptor保證actionMessage在redirect後不會丟失 -->

        <interceptors>

            <interceptor name="loginInter" class="com.cmcc.bdp.base.LoginInterceptor"/>            

            <interceptor name="userRole"   class="com.cmcc.bdp.base.UserRoleInterceptor"/>

           

            <interceptor-stack name="webStack">

                <interceptor-ref name="store">

                    <param name="operationMode">AUTOMATIC</param>

                </interceptor-ref>

                <interceptor-ref name="paramsPrepareParamsStack" />

                <interceptor-ref name="loginInter"/>

              <interceptor-ref name="userRole"/>

            </interceptor-stack>

        </interceptors>

 

        <default-interceptor-ref name="webStack" />

 

        <global-results>

            <result name="notRoleError" >/WEB-INF/jsp/common/notRoleError.jsp</result>

        </global-results>

 

        <global-exception-mappings>

            <exception-mapping  exception="java.lang.Exception"result="error"/>

        </global-exception-mappings>       

    </package>

</struts>

--------------------------------------------------------------------------------------------

關於更多的constant的配置能夠參考下面的信息:

 

struts.serve.static.browserCache 
該屬性設置瀏覽器是否緩存靜態內容。當應用處於開發階段時,咱們但願每次請求都得到服務器的最新響應,則可設置該屬性爲false。 

struts.enable.DynamicMethodInvocation 
該屬性設置Struts 2是否支持動態方法調用,該屬性的默認值是true。若是須要關閉動態方法調用,則可設置該屬性爲false。 

struts.enable.SlashesInActionNames 
該屬性設置Struts 2是否容許在Action名中使用斜線,該屬性的默認值是false。若是開發者但願容許在Action名中使用斜線,則可設置該屬性爲true。 

struts.tag.altSyntax 
該屬性指定是否容許在Struts 2標籤中使用表達式語法,由於一般都須要在標籤中使用表達式語法,故此屬性應該設置爲true,該屬性的默認值是true。 

struts.devMode 
該屬性設置Struts 2應用是否使用開發模式。若是設置該屬性爲true,則能夠在應用出錯時顯示更多、更友好的出錯提示。該屬性只接受true和flase兩個值,該屬性的 默認值是false。一般,應用在開發階段,將該屬性設置爲true,當進入產品發佈階段後,則該屬性設置爲false。 

struts.i18n.reload 
該屬性設置是否每次HTTP請求到達時,系統都從新加載資源文件。該屬性默認值是false。在開發階段將該屬性設置爲true會更有利於開發, 但在產品發佈階段應將該屬性設置爲false。 
提示 開發階段將該屬性設置了true,將能夠在每次請求時都從新加載國際化資源文件,從而可讓開發者看到實時開發效果;產品發佈階段應該將該屬性設置爲 false,是爲了提供響應性能,每次請求都須要從新加載資源文件會大大下降應用的性能。 

struts.ui.theme 
該屬性指定視圖標籤默認的視圖主題,該屬性的默認值是xhtml。 

struts.ui.templateDir 
該屬性指定視圖主題所須要模板文件的位置,該屬性的默認值是template,即默認加載template路徑下的模板文件。 

struts.ui.templateSuffix 
該屬性指定模板文件的後綴,該屬性的默認屬性值是ftl。該屬性還容許使用ftl、vm或jsp,分別對應FreeMarker、 Velocity和JSP模板。 

struts.configuration.xml.reload 
該屬性設置當struts.xml文件改變後,系統是否自動從新加載該文件。該屬性的默認值是false。 

struts.velocity.configfile 
該屬性指定Velocity框架所需的velocity.properties文件的位置。該屬性的默認值爲 velocity.properties。 

struts.velocity.contexts 
該屬性指定Velocity框架的Context位置,若是該框架有多個Context,則多個Context之間以英文逗號(,)隔開。 

struts.velocity.toolboxlocation 
該屬性指定Velocity框架的toolbox的位置。 

struts.url.http.port 
該屬性指定Web應用所在的監聽端口。該屬性一般沒有太大的用戶,只是當Struts 2須要生成URL時(例如Url標籤),該屬性才提供Web應用的默認端口。 

struts.url.https.port 
該屬性相似於struts.url.http.port屬性的做用,區別是該屬性指定的是Web應用的加密服務端口。 

struts.url.includeParams 
該屬性指定Struts 2生成URL時是否包含請求參數。該屬性接受none、get和all三個屬性值,分別對應於不包含、僅包含GET類型請求參數和包含所有請求參數。 

struts.custom.i18n.resources 
該屬性指定Struts 2應用所須要的國際化資源文件,若是有多份國際化資源文件,則多個資源文件的文件名以英文逗號(,)隔開。 

struts.dispatcher.parametersWorkaround 
對於某些Java EE服務器,不支持HttpServlet Request調用getParameterMap()方法,此時能夠設置該屬性值爲true來解決該問題。該屬性的默認值是false。對於 WebLogic、Orion和OC4J服務器,一般應該設置該屬性爲true。  struts.freemarker.manager.classname  該屬性指定Struts 2使用的FreeMarker管理器。該屬性的默認值是org.apache.struts2.views.freemarker.FreemarkerManager,這是 Struts 2內建的FreeMarker管理器。  struts.freemarker.wrapper.altMap  該屬性只支持true和false兩個屬性值,默認值是true。一般無需修改該屬性值。  struts.xslt.nocache  該屬性指定XSLT Result是否使用樣式表緩存。當應用處於開發階段時,該屬性一般被設置爲true;當應用處於產品使用階段時,該屬性一般被設置爲false。  struts.configuration.files  該屬性指定Struts 2框架默認加載的配置文件,若是須要指定默認加載多個配置文件,則多個配置文件的文件名之間以英文逗號(,)隔開。該屬性的默認值爲struts- default.xml,struts-plugin.xml,struts.xml,看到該屬性值,讀者應該明白爲何Struts 2框架默認加載struts.xml文件了。  struts.objectFactory  該屬性指定Struts 2中的action由哪一個容器建立 struts.convention.default.parent.package:這個常量表示缺省的包名是什麼,由於在實際應用中,咱們經常定義一個缺省的包,這個包中定義了一大堆的攔截器等等,而後其餘的包繼承自這個包。這個常量能夠配也能夠不配; struts.convention.package.locators:這個常量表示你的action類的java包的包名的後綴是啥:好比action。這個常量也能夠不配; struts.convention.package.locators.basePackage:這個常量表示你的action類的java包package的名字是啥;這個常量也能夠不配; <?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>          <!--指定Web應用的默認編碼集.該屬性對於處理中文請求參數很是有用,對於獲取中文請求參數值,應該將該屬性值設置爲GBK或者GB2312;               提示:當設置該參數爲GBK時,至關於調用HttpServletRequest的setCharacterEncoding方法. >    <constant name="struts.i18n.encoding" value="UTF-8" />             <!--指定Struts 2默認的ObjectFactory Bean,該屬性默認值是spring. >    <constant name="struts.objectFactory" value="spring" />             <!--指定Spring框架的自動裝配模式, 該屬性的默認值是name, 即默認根據Bean的name屬性自動裝配. >    <constant name="struts.objectFactory.spring.autoWire" value="name" />             <!--該屬性指定整合Spring框架時,是否緩存Bean實例,該屬性只容許使用true和false兩個屬性值,它的默認值是true.一般不建議修改該屬性值. >    <constant name="struts.objectFactory.spring.useClassCache" value="true" />             <!--該屬性指定處理multipart/form-data的MIME類型(文件上傳)請求的框架,該屬性支持cos,pell和jakarta等屬性值, 即分別對應使用cos的文件上傳框架,pell上傳及common-fileupload文件上傳框架.該屬性的默認值爲jakarta.               注意:若是須要使用cos或者pell的文件上傳方式,則應該將對應的JAR文件複製到Web應用中.例如,使用cos上傳方式,則須要本身下載cos框架的JAR文件,並將該文件放在WEB-INF/lib路徑下. >    <constant name="struts.multipart.parser" value="jakarta" />             <!--該屬性指定上傳文件的臨時保存路徑,該屬性的默認值是javax.servlet.context.tempdir. >    <constant name="struts.multipart.saveDir" value="" />             <!--該屬性指定Struts 2文件上傳中整個請求內容容許的最大字節數. >    <constant name="struts.multipart.maxSize" value="1000000000000" />             <!--該屬性指定須要Struts 2處理的請求後綴,該屬性的默認值是action,即全部匹配*.action的請求都由Struts 2處理.若是用戶須要指定多個請求後綴,則多個後綴之間以英文逗號(,)隔開. >    <constant name="struts.action.extension" value="do" />             <!--該屬性設置是否經過JAR文件提供靜態內容服務,該屬性只支持true和false屬性值,該屬性的默認屬性值是true. >    <constant name="struts.serve.static" value="true" />             <!--該屬性設置瀏覽器是否緩存靜態內容.當應用處於開發階段時,咱們但願每次請求都得到服務器的最新響應,則可設置該屬性爲false. >    <constant name="struts.serve.static.browserCache" value="true" />             <!--該屬性設置Struts 2應用是否使用開發模式.若是設置該屬性爲true,則能夠在應用出錯時顯示更多、更友好的出錯提示.該屬性只接受true和flase兩個值,該屬性的默認值是false.一般,應用在開發階段,將該屬性設置爲true,當進入產品發佈階段後,則該屬性設置爲false. >    <constant name="struts.devMode" value="false" />             <!--該屬性設置是否每次HTTP請求到達時,系統都從新加載資源文件(容許國際化文件重載).該屬性默認值是false.在開發階段將該屬性設置爲true會更有利於開發,但在產品發佈階段應將該屬性設置爲false.               提示:開發階段將該屬性設置了true,將能夠在每次請求時都從新加載國際化資源文件,從而可讓開發者看到實時開發效果;產品發佈階段應該將該屬性設置爲false,是爲了提供響應性能,每次請求都須要從新加載資源文件會大大下降應用的性能. >    <constant name="struts.i18n.reload" value="false" />             <!--該屬性指定視圖標籤默認的視圖主題,該屬性的默認值是xhtml. >    <constant name="struts.ui.theme" value="simple" />             <!--該屬性指定模板文件的後綴,該屬性的默認屬性值是ftl.該屬性還容許使用ftl、vm或jsp,分別對應FreeMarker、Velocity和JSP模板. >    <constant name="struts.ui.templateSuffix" value="ftl" />             <!--該屬性設置當struts.xml文件改變後,系統是否自動從新加載該文件.該屬性的默認值是false. >    <constant name="struts.configuration.xml.reload" value="false" />             <!--該屬性指定Struts 2應用所須要的國際化資源文件,若是有多份國際化資源文件,則多個資源文件的文件名以英文逗號(,)隔開. >    <constant name="struts.custom.i18n.resources" value="nationz" />             <!--對於某些Java EE服務器,不支持HttpServlet Request調用getParameterMap()方法,此時能夠設置該屬性值爲true來解決該問題.該屬性的默認值是false.對於WebLogic、Orion和OC4J服務器,一般應該設置該屬性爲true. >    <constant name="struts.dispatcher.parametersWorkaround" value="false" />             <!--指定是否緩存FreeMarker模版。默認值false。>    <constant name="struts.freemarker.templatesCache" value="true" />             <!--該屬性只支持true和false兩個屬性值,默認值是true.一般無需修改該屬性值. >    <constant name="struts.freemarker.wrapper.altMap" value="true" />             <!--該屬性指定XSLT Result是否使用樣式表緩存.當應用處於開發階段時,該屬性一般被設置爲true;當應用處於產品使用階段時,該屬性一般被設置爲false. >    <constant name="struts.xslt.nocache" value="false" />             <!--該屬性指定Struts 2框架默認加載的配置文件,若是須要指定默認加載多個配置文件,則多個配置文件的文件名之間以英文逗號(,)隔開.該屬性的默認值爲struts-default.xml,struts-plugin.xml,struts.xml,看到該屬性值,因此應該明白爲何Struts 2框架默認加載struts.xml文件了. >    <constant name="struts.configuration.files" value="struts-default.xml,struts-plugin.xml" />             <!--設置映射器是否老是選擇完整的名稱空間。該屬性的默認值時false。>    <constant name="struts.mapper.alwaysSelectFullNamespace" value="false" />             <!--設置Convention插件定位視圖資源的根路徑。默認值爲/WEB-INF/content>    <constant name="struts.convention.result.path" value="/WEB-INF/content/" />              <!--Convention插件以該常量指定包做爲根包>    <constant name="struts.convention.action.package" value="default" />              <!--是否從包中搜索Action>    <constant name="struts.convention.action.disableScanning" value="false"/>                    <!-- 官方只說明在jboss下須要設置,狀況不明 -->    <constant name="struts.convention.exclude.parentClassLoader" value="true" />     <constant name="struts.convention.action.fileProtocols" value="jar,zip" />             <!--包括哪些jar包中的action。逗號分割字符串。>    <constant name="struts.convention.action.includeJars" value=".*?/_wl_cls_gen.*?jar(!/)?" />             <!--肯定搜索包的路徑。只要是結尾爲action的包都要搜索。>    <constant name="struts.convention.package.locators" value="action" />       </struts>  

相關文章
相關標籤/搜索