【原創】Struts1.x系列教程(17):包含和轉入Web資源

銀河使者發表於2009-03-19

本文為原創,如需轉載,請註明作者和出處,謝謝!

一、使用IncludeAction類包含Web資源

    雖然在JSP頁面中可以使用標籤包含另一個Web資源,但Struts框架提倡在包含Web資源時應先經過Struts控制器處理後,再由Struts控制器負責包含Web資源。org.apache.struts.actions.IncludeAction類提供了包含其他Web資源的功能。使用IncludeAction類要在struts-config.xml中配置元素。配置IncludeAction類的程式碼如下:

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt<action path="/include" type="org.apache.struts.actions.IncludeAction"
            input
="/firstValidator.jsp" validate="false"
            name
="firstValidatorForm" parameter="/firstValidator.jsp" />

在配置上面程式碼時應注意兩點:

1. firstValidator.jsp頁面使用了firstValidatorForm進行資料驗證,所有應將元素的validate屬性設為“false”。否則在執行include動作時就會進行驗證。在這時firstValidatorForm中的所有屬性都沒有被賦值。所以每個屬性都無法通過驗證。讀者可以將validate屬性設為“true”,看看會發生什麼情況。
    2. IncludeAction類的功能和效果與標籤完全一樣。這就意味著在IncludeAction包含的其他 Web資源中無法改變響應資訊頭。這樣就無法改變Content-Type欄位的值。因此,按著上面的設定來執行程式,所有的中文資訊會顯示亂碼。解決的 方法有很多,如可以自己實現一個IncludeAction類的子類,在子類的execute方法中設定Content-Type的值。或都更簡單的方法 是在過濾器(EncodingFilter)中加入如下的程式碼:   

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gtresponse.setCharacterEncoding("GBK");


在IE中輸入http://localhost:8080/samples/include.do可訪問include動作。

   雖然在JSP頁面中可以使用標籤把請求轉發給另一個Web資源,但Struts框架提倡在轉發Web資源時應先經過Struts控制器處理後,再由Struts控制器轉發Web資源。org.apache.struts.actions.ForwardAction類提供了轉發其他Web資源的功能。使用ForwardAction類要在struts-config.xml檔案中配置元素。下面的程式碼演示瞭如何在元素中使用ForwardAction類來包含其他的Web資源:

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt<action path="/forward" type="org.apache.struts.actions.ForwardAction"
            input
="/firstValidator.jsp" validate="false"
            name
="firstValidatorForm" parameter="/firstValidator.jsp" />

    由於經過轉發的Web資源可以改變Content-Type欄位的值,因此,使用ForwardAction類進行轉發時,無需再另外改變Content-Type欄位的值(因為在firstValidator.jsp頁面中已經設定了Content-Type的值)。
   
IE中輸入http://localhost:8080/samples/forward.do可訪問forward動作。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12921506/viewspace-571501/,如需轉載,請註明出處,否則將追究法律責任。

相關文章