天天看點

Struts2的動态Action和全局跳轉視圖以及配置各項預設值

1:Struts2的預設通路字尾是.action(特别需要注意的是改了配置檔案web.xml或者struts.xml需要重新開機伺服器)

Struts2的動态Action和全局跳轉視圖以及配置各項預設值

 2:Struts2中常用的常量介紹:

<!-- 一:全局配置 -->

<!--1.請求資料編碼  -->

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

<!--2.修改struts2預設的自定義字尾 -->

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

<!--3.設定浏覽器是否緩存靜态内容,預設值為true(生産環境下使用),開發階段最好關閉   -->

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

<!--4.當struts的配置檔案修改後,系統是否自動重新加載該檔案,預設值為false(生産環境下使用),開發階段最好打開   -->

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

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

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

<!--6.預設的視圖主題  -->

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

<!--7.與spring內建時,指定由spring負責action對象的建立   -->

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

<!--8.該屬性設定Struts 2是否支援動态方法調用,該屬性的預設值是true。如果需要關閉動态方法調用,則可設定該屬性為 false -->

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

<!--9.上傳檔案的大小限制 -->

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

 3:Struts2的動态Action的簡單應用和多個.xml的使用:

第一步:引包,略去

第二步:配置web.xml

第三步:開發第一個Action,配置第一個struts01.xml檔案

第四步:開發第二個Action,配置第二個struts02.xml檔案

第五步:配置struts2的全局變量以及總struts.xml檔案;

需要注意的是動态Action預設是不使用的,将false改為true即可使用動态Action。

運作效果如下所示:(注意:動态Action的通路是action的name屬性加!後面是方法名即可通路。)詳細如下圖所示:

Struts2的動态Action和全局跳轉視圖以及配置各項預設值
Struts2的動态Action和全局跳轉視圖以及配置各項預設值
Struts2的動态Action和全局跳轉視圖以及配置各項預設值

4:配置各項預設值:詳解如下所示  配置全局跳轉視圖,先去action的result找,如果沒有就去全局視圖找:

 

5:Struts2的Action的開發的幾種方式

    (1):方式一,繼承ActionSupport,最經常使用的。

           如果用struts的資料校驗功能,必須繼承此類;

    (2):方式二,實作Action接口

    (3):方式三,手動寫;

 6:使用通配符進行配置Action(在struts中配置資訊中,可以用*和{1}優化配置;),如下所示:

 然後配置strutsConfig.xml配置檔案,注意這裡的Action使用了占位符進行配置:

然後在總的配置檔案struts.xml中引入配置檔案strutsConfig.xml即可,如下所示:

通路的時候如下所示:

Struts2的動态Action和全局跳轉視圖以及配置各項預設值

對比一下可以很清晰的發現他們之間的差別,這就是使用了占位發簡化開發;

Struts2的動态Action和全局跳轉視圖以及配置各項預設值

7:Struts的常量

        Struts1中預設通路字尾是*.do

        Struts2中預設通路字尾是*action

  如何修改預設通路字尾:

      (1):Struts的通路字尾在哪裡定義:

           在default.properties檔案中

          預設通路字尾:struts.action.extension=action,,

 8:配置的順序書寫,?代表0或者1,*代表0或者多:

The content of element type "package" must match "(   result-types?,   interceptors?,   default-interceptor-ref?,   default-action-ref?,   default-class-ref?,   global-results?,   global-exception-mappings?,   action*)".