一、細說常量配置
A)配置:常量可以在struts.xml或struts.properties中配置,建議在struts.xml中配置,兩種配置方式如下:
在struts.xml文件中配置常量
<struts>
<constant name="struts.action.extension" value="do"/>
</struts>
在struts.properties中配置常量
struts.action.extension=do
B)Struts2文件加載順序:
struts-default.xml 、struts-plugin.xml 、struts.xml 、struts.properties 、Web.xml
如果在多個文件中配置了同一個常量,則後一個文件中配置的常量值會覆蓋前面文件中配置的常量值.
C)常用常量簡介:
struts.i18n.encoding 指定默認編碼集,作用於HttpServletRequest的setCharacterEncoding方法 和freemarker 、velocity的輸出
Struts.action.extension 該屬性指定需要Struts 2處理的請求後綴,該屬性的默認值是action,即所有匹配*.action的請求都由Struts2處理。 如果用戶需要指定多個請求後綴,則多個後綴之間以英文逗號(,)隔開
struts.serve.static.browserCache 設置瀏覽器是否緩存靜態內容,默認值爲true(生產環境下使用),開發階段最好關閉
Struts.configuration.xml.reload 當struts的配置文件修改後,系統是否自動重新加載該文件,默認值爲false(生產環境下使用),開發階段最好打開
struts.devMode 開發模式下使用,這樣可以打印出更詳細的錯誤信息
struts.objectFactory 與spring集成時,指定由spring負責action對象的創建
struts.enable.DynamicMethodInvocation 該屬性設置Struts 2是否支持動態方法調用,該屬性的默認值是true。如果需要關閉動態方法調用,則可設置該屬性爲false
struts.multipart.maxSize 上傳文件的大小限制 默認是2M
二、在大部分應用裏,隨着應用規模的增加,系統中Action的數量也會大量增加,導致struts.xml配置文件變得非常臃腫。爲了避免struts.xml文件過於龐大、臃腫,提高struts.xml文件的可讀性,我們可以將一個struts.xml配置文件分解成多個配置文件
<include file="struts-user.xml"/>
<include file="struts-order.xml"/>
三、動態調用方法,指定一個action則可以調用不同的方法
首先我們需要在action標籤中設置name的時候用*號代表佔位符
<action name="helloworld_*" class="cn.csdn.action.HelloWorldAction" method="{1}">
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
這樣我們就可以用helloworld!add.action訪問 或者用hellworld_add.action訪問add的方法
四、接受請求參數
a) 接受基本的參數類型:Struts2內置的類型轉換來自動轉換
b) 複合類型接受請求參數
在其中定義實體類user的實例對象左右action的屬性並且指定了set方法
那就可以在form表單中使用user.id user.name來指定name屬性。Struts2就可以將表單中的值賦給user這個對象並且封裝
四、類型轉換
a) 類型轉換器實現
使用這種方式也可以使用java類的封裝,一般分爲三步來實現
1、添加視圖界面。 在input中的name屬性指定成user即可
2、實現User封裝類
3、實現action類 封裝User類的實例屬性並且生出set方法
4、實現User類型轉換UserConverter類 繼承ognl.DefaultTypeConverter
5、實現註冊,可以實現全局類型轉換器和局部類型轉換器
a) 全局轉換器,配置xwork-conversion.properties 放在src目錄下在內容指定key-value值 爲 需要轉換的實體類的類名+包名 指定對應的converter的類名+包名
b) 局部轉換起 配置
指定action中的實體實例的屬性名和對應的converter的類名+包名
b) 自定義類型轉換
i. 將類型轉換器配置成全局級別只需要編寫一個xwork-conversion.properties文件。放在src目錄下。Key-value指定需要轉換的實體類與轉換器類內容如下: java.util.Date=demo.converter.MyDateTypeConverter
ii. 可以繼承ognl.DefaultTypeConverter類。也可以繼承org.apache.struts2.util.StrutsTypeConverter這個類,實現兩個方法來實現 自定義轉換器