Action注入屬性值、字尾以及常量問題

weixin_34054866發表於2017-06-29
一、Action屬性依賴注入的問題

Struts2為Action中的屬性提供了依賴注入功能,在Struts2的配置檔案中,我們可以很方便地為Action中屬性注入值,注意的是屬性中必須提供setter方法

1、Action中的程式碼:

package cn.itcast.action;

public class LoginAction {
    private String companyName;
    
    public String getCompanyName() {
        return companyName;
    }
    
    public String execute() {
        return "success";
    }

}

2、配置檔案

 <action name="hello" class="cn.itcast.action.LoginAction" method="execute">
            <result name="success">/WEB-INF/index.jsp</result>
            <param name="companyName">中國有限公司</param>
         </action>

上面是通過<param>結點為action的savePath屬性注入"companyName"
注意:即使為屬性注入值時中文,也不用考慮編碼問題~

二、指定需要處理的請求字尾

預設是使用.action字尾訪問Action的,
一般可以通過"struts.action.extension"進行修改的,例如指定多個請求字尾,多個字尾之間用英文逗號隔開,如在struts.xml檔案中配置:
<constant name="struts.action.extension" value="do,action"/>

只要使用指定字尾,使用預設方式訪問字尾會提示找不到網頁

三、常量定義

上述的改變字尾的方法也可以在struts.proprtise中配置常量(文件上不建議):

struts.action.extension=do

1、因為常量可以在下面的多個配置檔案中進行定義,所以Struts2載入常量的搜尋順序如下:(從第一個往後)
struts-default.xml
struts-plugin.xml
struts.xml
struts.properties
web.xml
如果多個檔案中配置了同一個常量,則後一個檔案中配置的常量值會覆蓋前面檔案中配置的常量。

2、常用的常量介紹
1>指定預設的編碼集,相當於作用於httpServletRequest 的setCharacterEncoding方法和freemarker、velocity的輸出
<constant name="struts.i.18n.encoding" value="utf-8"/>

2、如果使用者需要指定Struts2處理的請求字尾,該屬性的預設值是action,即所有匹配*.action的請求都由Struts2處理。

<constant name="struts.action.extension" value="do"/>

3、設定瀏覽器是否快取靜態內容,預設值為true(生產環境下使用)、開發階段最好關閉

<constant name="struts.serve.static.browserCache" value="false"/>

4、當Struts的配置檔案修改後。系統是否自動重新載入該檔案,預設值為false(生產環境下使用)、開發階段最好開啟

<constant name="struts.configuration.xml.reload" value="true"/>

5、開發模式下使用,這樣可以列印出更詳細的錯誤資訊

<onstant name="struts.devMode" value="true"/>

6、預設的檢視主題

<constant name="struts.ui.theme" value="simple"/>

7、與Spring整合時,指定由spring負責action物件的建立

<constant name="struts.objectFactory" value="spring"/>

8、該屬性設定Struts2是否支援動態方法呼叫,該屬性的預設值是true。如果需要關閉動態方法呼叫,則可設定該屬性為false。

<constant name="struts.enable.DynamicMethodinvocation" value="false"/>

9、上傳檔案大小的限制

<constant name="struts.multipart.maxSize" value="10701096"/>

相關文章