隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
          數據加載中……

          Struts1.x系列教程(17):使用IncludeAction和ForwardAction類包含和轉入Web資源

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

          上一篇:Struts1.x系列教程(16):使用LocaleAction類實現國際化的Web程序

          一、使用IncludeAction類包含Web資源

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

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

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

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

          response.setCharacterEncoding("GBK");


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

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

          <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動作。

          下一篇:
          Struts1.x系列教程(18):使用DispatchAction類調用多個Action方法





          Android開發完全講義(第2版)(本書版權已輸出到臺灣)

          http://product.dangdang.com/product.aspx?product_id=22741502



          Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


          新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

          posted on 2009-02-19 10:36 銀河使者 閱讀(2609) 評論(1)  編輯  收藏 所屬分類: javaweb 原創struts1.x

          評論

          # re: Struts1.x系列教程(17):使用IncludeAction和ForwardAction類包含和轉入Web資源  回復  更多評論   

          肚子不痛了?
          2011-05-14 23:49 | cheap sunglasses
          主站蜘蛛池模板: 芷江| 广元市| 虞城县| 潮安县| 手机| 潼南县| 沧州市| 韩城市| 桐城市| 秭归县| 桂林市| 江华| 榆社县| 九台市| 辽阳县| 陈巴尔虎旗| 金华市| 任丘市| 红桥区| 翼城县| 会宁县| 永靖县| 察雅县| 丽水市| 延川县| 海口市| 丹阳市| 赤水市| 万全县| 融水| 台前县| 称多县| 肇源县| 来宾市| 黔东| 台南市| 化德县| 岳阳市| 普洱| 渭南市| 彭州市|