SSH框架之Struts的預設訪問字尾、相同訪問路徑問題、常量
阿新 • • 發佈:2019-02-09
一、Struts中預設訪問字尾:
1、Struts1中預設訪問字尾是*.do
2、Struts2中預設訪問字尾是*.action
3、如何修改預設訪問字尾:
1)Struts2的.action訪問字尾在哪裡定義?
Struts-core-2.3.4.1.jar/org.apache.struts/default.properties中的
struts.action.extension=action,,
2)在struts.xml中進行對常量的修改
所有的專案都要使用,是一個全域性配置,所以位置應該位於:
<struts>標籤的後面,<package>標籤的前面!
<!--指定訪問字尾為action/do/沒有訪問字尾,都可以-->
<constant name="struts.action.extension" value="action,do,"></constant>
4、情況分析
value="action,,"
localhost:8080/struts_02/user_register OK
localhost:8080/struts_02/user_register.action OK
value="action," 或 value="action"
localhost:8080 /struts_02/user_register.action OK
value="action,do,"
localhost:8080/struts_02/user_register OK
localhost:8080/struts_02/user_register.do OK
localhost:8080/struts_02/user_register.action OK
value="action,do"
localhost:8080/struts_02/user_register.do OK
localhost:8080/struts_02/user_register.action OK
二、相同訪問路徑問題
問題產生:
1、Action
2、struts.xml
<action name="user_*" class="sram.config.UserAction4" method="{1}">
<result name="success">/index.jsp</result>
</action>
<action name="user_*" class="sram.config2.UserAction" method="{1}">
<result name="success">/index.jsp</result>
</action>
3、由於上述情況,所以二者想要訪問register方法的訪問路徑均為:
http://localhost:8080/struts_02/user_register
結果:
當我們訪問此路徑時,執行情況到底如何?
由此可見,配置在前面的會被配置在後面的覆蓋掉
三、Struts中的常量(Struts-core-2.3.4.1.jar/org.apache.struts/default.properties中)
1、詳解:
<!--指定預設編碼集,作用於HttpServletRequest的setCharacterEncoding方法 和freemarker 、velocity的輸出(僅對POST起作用)-->
<constant name="struts.i18n.encoding" value="UTF-8"/>
<!--自定義字尾修改常量-->
<constant name="struts.action.extension" value="do"/>
<!--設定瀏覽器是否快取靜態內容,預設值為true(生產環境下使用),開發階段最好關閉 -->
<constant name="struts.serve.static.browserCache" value="false"/>
<!--當struts的配置檔案修改後,系統是否自動重新載入該檔案,預設值為false(生產環境下使用),開發階段最好開啟 -->
<constant name="struts.configuration.xml.reload" value="true"/>
<!--開發模式下使用,這樣可以打印出更詳細的錯誤資訊 -->
<constant name="struts.devMode" value="true" />
<!--預設的檢視主題 -->
<constant name="struts.ui.theme" value="simple" />
<!--與spring整合時,指定由spring負責action物件的建立-->
<constant name="struts.objectFactory" value="spring" />
<!--該屬性設定Struts 2是否支援動態方法呼叫,該屬性的預設值是true。如果需要關閉動態方法呼叫,則可設定該屬性為 false-->
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
<!--上傳檔案的大小限制,value的值為單位位元組-->
<constant name="struts.multipart.maxSize" value=“10701096"/>
2、應用:動態方法呼叫(不推薦使用,原因:這種形式,需要對程式結構有所瞭解,不安全)
1、動態方法呼叫語法:action name+!+方法名
2、舉例: