Struts框架(二)——對象

引言:

               知識在於總結,生命在於運動。

概述:

              本篇博客,小編爲大家帶來自己學習Struts過程中瞭解到幾個有用的對象,分別是ActionForm、ActionForward、ActionMapping、Action、ActionMessage。

內容:

               一 ActionForm:主要說明ActionForm在Struts中的作用。

              (1)表單數據收集:

                       1)通過http提交表單數據:核心就是將ActionForm對象中的屬性與頁面的值匹配起來,在該對象java類中編寫屬性,並得到其get、set方法,然後在action中調用ActionForm得到頁面的值。

                       2)通過http上傳文件:在ActionForm中使用FormFile來接收上傳的文件,然後Action中調用FormFile取得數據,採用流輸出,即完成上傳。

              (2)類型轉換:所有從表單提交到後臺的數據均爲字符串類型,通過ActionForm自動轉換爲int、boolean、Date、Double類型。

                       1)boolean:yes、1、no、true都會轉換成true類型,而且忽略大小寫其他情況都轉換成false

                       2)Date類型轉換:如果是java.sql.Date,頁面日期的格式必須爲yyyy-mm-dd,纔可以轉換;如果是java.util.Date,默認情況下struts無法轉換。

                       3) 自定義轉換器:第一步,實現converter接口,實現convert方法;第二步,將實現的converter註冊,通常情況採用servlet註冊;第三步,採用servlet註冊需要配置的標籤 <load-on-startup>10</load-on-startup>(也可以採用struts plugin註冊)

              (3)作爲傳輸對象:實體對象賦值爲值對象或數據傳輸對象,實體對象改變不會影響前臺顯示。

              (4)動態ActionForm:把頁面中的Html元素的名字和值放入map中,通過get方法取出相應的值,並採用EL表達式的輸入方式${dynabean.map.prop};好處是可以減少靜態ActionForm的數量,若進行動態ActionForm的驗證,通過使用動態驗證框架validator。

          二 ActionForward:Action操作成功後,會回傳給ActionServlet,個人感覺與Action中的forward的屬性差不多。

              (1)轉發(froward)與重定向(redirect):redirect=true爲重定向,反之爲轉發

                 (2)全局與局部ActionForward:全局forward,所有action都可以使用;局部forward只能被包含它的action使用。使用原則:就近原則,一般都是以局部優先,然後再解析全局的forward。

              (3)受保護的頁面可以放到WEB-INF文件夾下,避免通過URL直接進入頁面的情況,不過要注意的是Action中的路徑也要做相應的改變。

              (4)struts-config.xml不能在運行時修改,動態ActionForward,可以運行期修改。

              (5)我們可以採用手動轉向: response.sendRedirect(request.getContextPath()+ "/login.jsp");

           三 ActionMapping:web應用中,每個資源都必須通過url來進行引用,爲了給動作定製一個url或者說路徑,Struts提供了ActionMapping 對象。

              (1)主要功能:管理Action的信息和管理Action執行完成以後的轉向信息。接收特定http請求,映射到Action,並將相關信息存儲在ActionMapping中,ActionServlet將ActionMapping的信息傳送到Action類的execute()方法,Action將使用ActionMapping的findForward()方法,此方法返回一個指定名稱的ActionForward,這樣就實現了轉發;若沒有找到具體的ActionForward,返回值爲null。

              (2)主要屬性:path、forward、type、name、scope(取值包括session和request,默認爲session)、validate、input、parameter、unknown(注意只能有一個action包含該屬性,相當於forward跳轉到error頁面)。

                 (3)主要方法:public ExceptionConfig findException(Class type) ,查找異常對象;

                                         public ActionForward    findForward(String name) 可在映射中動態添加ActionForward

                                         public String[]         findForwards()找到一個Action可以使用的actionForward列表

                                         public ActionForward    getInputForward() 得到本action的輸入ActionForard.


            (4)如何配置:             
    <struts-config>  
    <action-mappings>  
    <actionpathactionpath="/login"  
    type="com.bjpowernode.struts.LoginAction"  
    name="loginForm"                  
    scope="request"                  
    >  
    <forwardnameforwardname="success" path="/login_success.jsp" />  
    <forwardnameforwardname="error"path="/login_error.jsp"/>                  
    </action>  
    </action-mappings>  
    </struts-config>  
                 四 Action對象:http://blog.csdn.net/lsh6688/article/details/7525963
                  五 ActionMessage對象:存儲提示消息的對象,例如錯誤消息提示等。

              (1)如何創建消息對象:ActionMessage msg = new ActionMessage("key")。

              (2)如何將消息從Action傳遞給JSP:傳遞的消息分爲普通的消息和錯誤消息,通過調用父類(Action)所提供的方法saveMessage()/saveErrors()來保存消息對象。

              (3)如何在JSP中使用消息對象:使用<html:messages/>標籤來顯示消息,該標籤包含四大屬性:name-消息對象的名稱;id-消息對象的標識;property-指定顯示哪條消息;message-取值爲true,顯示普通消息,取值爲false,將顯示錯誤消息。還有一個標籤<html:errors/>只顯示錯誤消息。

總結:

             這麼多核新對象,最重要的其實是Action對象,可以說Action是Struts的靈魂,相信瞭解過的都知道。這裏小編爲大家展示了Struts的核心對象,希望大家閱讀的過程中,多提問題和建議,在交流中共同進步。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章