<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-25  評論-6  文章-0  trackbacks-0
    ActionMapping類
    將特定請求映射到特定Action的相關信息存儲在ActionMapping中,ActionServelt將ActionMapping傳送到Action類的execute()方法,Action將使用ActionMapping的findForward()方法,此方法返回一個指定名稱的ActionForward,這樣Action就完成了本地轉發。若沒有找到具體的ActionForward,就返回一個null.
    ActionMapping的方法:
    public ExceptionConfig findException(Class type) ,查找異常對象
    public ActionForward findForward(String name) 可在映射中動態添加ActionForward:
    public String[] findForwards()找到一個Action可以使用的actionForward列表
    public ActionForward getInputForward() ?得到本action的輸入ActionForard.
    ActionMapping繼承于org.apache.struts.config.ActionConfig

    Action類
    Action類真正實現應用程序的事務邏輯,它們負責處理請求。在收到請求后,ActionServlet會:
    1.為這個請求選擇適當的Action
    2.如果需要,創建Action的一個實例
    3.調用Action的execute()方法
    如果ActionServlet不能找到有效的映射,它會調用默認的Action類(在配置文件中定義)。如果找到了ActionServlet將適當的ActionMapping類轉發給Action,這個Action使用ActionMapping找到本地轉發,然后獲得并設置ActionMapping屬性。根據servlet的環境和被覆蓋的execute ()方法的簽名,ActionServlet也會傳送ServletRequest對象或HttpServletRequest對象。
    所有Action類都擴展org.apache.struts.action.Action類,并且覆蓋類中定義的某一個execute ()方法。有兩個execute ()方法:
    處理非HTTP(一般的)請求:
    public ActionForward execute (ActionMapping action,
    Acionform form,
    ServletRequest request,
    ServletResponse response)
    ? ?throws java.lang.Exception
    處理HTTP請求:
    public ActionForward execute (ActionMapping action,
    Acionform form,
    HttpServletRequest request,
    HttpServletResponse response)
    ? ?throws java.lang.Exception
    Action類必須以”線程安全”的方式進行編程,因為控制器會令多個同時發生的請求共享同一個實例,相應的,在設計Action類時就需要注意以下幾點:
    不能使用實例或靜態變量存儲特定請求的狀態信息,它們會在同一個操作中共享跨越請求的全局資源
    如果要訪問的資源(如JavaBeans和會話變量)在并行訪問時需要進行保護,那么訪問就要進行同步
    Action類的方法
    除了execute ()方法外,還有以下方法:
    可以獲得或設置與請求相關聯的區域:
    public Locale getLocale(HttpServletRequest request)
    public void setLocale(HttpServletRequest request,Locale locale)
    為應用程序獲得消息資源:
    protected MessageResources getResources(HttpServletRequest request)
    protected MessageResources getResources(HttpServletRequest request,String key)
    檢查用戶是否點擊表單上的”取消”鍵,如果是,將返回true:
    public Boolean isCancelled(HttpServletRequest request)
    當應用程序發生錯誤時,Action類能夠使用下面方法存儲錯誤信息:
    public void saveErrors(HttpServletRequest request,ActionErrors errors)
    public void saveMessages(HttpServletRequest request,ActionMessages messages)
    ActionError實例被用來存儲錯誤信息,這個方法在錯誤關鍵字下的請求屬性列表中存儲ActionError對象。通過使用在struts標記庫中定義的自定義標記,JSP頁能夠顯示這些錯誤信息。ActionMessages 用來存儲一些提示信息,不是錯誤,在jsp頁面可以使用標記現實這些提示信息。
    請求有效性處理,使用令牌可以有效的防止重復提交。
    protected String generateToken(HttpServletRequest request) 創建一個令牌.
    protected boolean isTokenValid(HttpServletRequest request) 檢查令牌是否有效
    protected boolean isTokenValid(HttpServletRequest request,Boolean reset) 檢查令牌是否有效,并且重置令牌(如果reset 是true)
    protected void resetToken(HttpServletRequest request) 重置令牌
    protected void saveToken(HttpServletRequest request) 添加令牌
    獲取數據庫連接
    protected DataSource getDataSource(HttpServletRequest request)
    protected DataSource getDataSource(HttpServletRequest request, String key)
    其他的
    ActionServlet getServlet() ?可以獲得本action的配置信息.

    DispatchAction類
    DispatchAction是Action的子類,主要功能可以實現,動態的方法調用。例如action中有一個方法update(ActionMapping mapping, Actionform form, HttpServletRequest request, HttpServletResponse response), 可以通過 saveSubscription.do?method=update來調用update方法。這個類不需要我們實現其他方法,我們只要實現 XXX(ActionMapping mapping, Actionform form, HttpServletRequest request, HttpServletResponse response)就可以了。
    在http://www.chinajavaworld.net/forum/topic.cgi?forum=48&topic=1166&show=150和
    http://www.chinajavaworld.net/forum/topic.cgi?forum=48&topic=1129有對DispatchAction和LookupDispatchAction的詳細介紹

    SwitchAction類
    SwitchAction是Action的子類,主要功能是將請求在不同的模塊之間轉發。對于大的項目很有用。具體看http://www.chinajavaworld.net/forum/topic.cgi?forum=48&topic=1029&show=0

    Actionform類
    假設用戶在應用程序中為每個表單都創建了一個Actionform bean,對于每個在struts-config.xml文件中定義的bean,框架在調用Action類的execute()方法之前會進行以下操作:
    在相關聯的關鍵字下,它檢查用于適當類的bean實例的用戶會話(或請求),如果在會話(或請求)中沒有可用的bean,它就會自動創建一個新的bean并添加到用戶的會話(或請求)中。至于是在會話還是請求取決于struts-config.xml 中Action 的scope屬性。在創建Actionform的時候,系統會將請求中的值,進行相應的類型轉換以后對Actionform進行初始化。
    對于請求中每個與bean屬性名稱對應的參數,Action調用相應的設置方法。
    當Action execute()被調用時,最新的Actionform bean傳送給它,參數值就可以立即使用了。
    Actionform類擴展org.apache.struts.action.Actionform類,程序開發人員創建的bean能夠包含額外的屬性,而且ActionServlet可能使用反射(允許從已加載的對象中回收信息)訪問它。
    Actionform類提供了另一種處理錯誤的手段,提供兩個方法:
    Public ActionErrors validate(ActionMappin mapping, ServletRequest request)
    Public ActionErrors validate(ActionMappin mapping, HttpServletRequest request)
    你應該在自己的bean里覆蓋validate()方法,并在配置文件里設置<action>元素的validate為true。在ActionServlet調用Action類前,它會調用validate(),如果返回的ActionErrors不是null,則Actinform會根據錯誤關鍵字將ActionErrors存儲在請求屬性列表中。
    如果返回的不是null,而且長度大于0,則根據錯誤關鍵字將實例存儲在請求的屬性列表中,然后ActionServlet將響應轉發到配置文件<action>元素的input屬性所指向的目標。
    如果需要執行特定的數據有效性檢查,最好在Action類中進行這個操作,而不是在Actionform類中進行。
    方法reset()可將bean的屬性恢復到默認值:
    public void reset(ActionMapping mapping,HttpServletRequest request)
    public void reset(ActionMapping mapping,ServletRequest request)
    典型的ActionFrom bean只有屬性的設置與讀取方法(getXXX),而沒有實現事務邏輯的方法。只有簡單的輸入檢查邏輯,使用的目的是為了存儲用戶在相關表單中輸入的最新數據,以便可以將同一網頁進行再生,同時提供一組錯誤信息,這樣就可以讓用戶修改不正確的輸入數據。而真正對數據有效性進行檢查的是Action類或適當的事務邏輯bean。
    Actionform中屬性允許的類型boolean,byte,short,char,int,long,float,double,Boolean,Btye,Short, Character,Integer,Long,Float,Double,String,Date,Time,Timestamp,Object,以及以上類型的數組。
    如果Actionform bean 的屬性是一個數組則相應的設置和讀取方法要做部分修改。對于數組setXXX(…),和getXXX()在jsp頁面中意義不大。應該將添加setXXX( int index , …. ) 方法和getXXX ( int index )方法。這兩個方法對于jsp頁面來說更有意義。jsp中的property應該是XXX[0]。
    如果Actionform bean的屬性是一個 Map則應該提供方法setXXX( String key , … )和getXXX(String key),使得jsp頁面可以訪問Map屬性。jsp中的properry應該是XXX(keyname)。
    通過getXXX(int index),setXXX (int index,…),getXXX(String key),setXXX(String key,…)可以方便的實現重復html輸入框。
    例如:
    public class Fooform extends Actionform {
    ? ?private String yourName;
    ? ?public String getYourName() {
    ? ? ? ?return yourName;
    ? ?}
    ? ?public void setYourName(String yourName) {
    ? ? ? ?this.yourName = yourName;
    ? ?}
    ? ?private final Map values = new HashMap();
    ? ?public void setvalue(String key, Object value) {
    ? ? ? ?values.put(key, value);
    ? ?}
    ? ?public Object getvalue(String key) {
    ? ? ? ?if ( values.containsKey(key)){
    ? ? ? ? ? ?return values.get(key);
    ? ? ? ?}else{
    ? ? ? ? ? ?return "";
    ? ? ? ?}
    ? ?}
    ? ?…
    }


    Validatorform類
    org.apache.struts.validator.Validatorform類繼承了Actionform類。使用本類可以方便的實現表單參數的校驗。在校驗的時候,使用在struts-config.xml中action元素中的name屬性,確定要在validation.xml中取得校驗規則的依據。
    使用本類可以方便的解決同一個form在不同的Action中使用不同的校驗規則的問題。在繼承了Validatorform的類中不再需要我們去寫validate方法。而是由Validatorform中的validate方法通過讀取validation.xml中的描述信息來進行數據的校驗。使用Validatorform也可以方便的實現在瀏覽器端實現利用腳本的校驗。
    Validatorform中的新增加的方法:
    int getPage()
    java.util.Map getResultvalueMap()
    ValidatorResults getValidatorResults()
    void setPage(int page)
    void setValidatorResults()
    使用本類可以大大提高我們的編程效率。
    ValidatorActionform類
    org.apache.struts.validator.ValidatorActionform類繼承了Validatorform類。使用本類可以方便的實現表單參數的校驗。在校驗的時候,使用在struts-config.xml中action元素中的path屬性,確定要在validation.xml中取得校驗規則的依據。

    DynaActionform類
    org.apache.struts.action.DynaActionform類繼承了Actionform類。使用本類可以方便的實現動態表單。創建不確定的表單,如果jsp發生了變化只需要修改jsp頁面和struts-config.xml文件中的form-bean元素就可以了。我們的程序中完全可以不用手工書寫actionform的類了。
    DynaActionform中的方法:
    boolean contains(String name, String key) 檢測name(key)在actionform中是否存在。
    Object get(String name) 從actionform中取得name的值。
    Object get(String name,int index) 從actionform中取得 name對象的index個值。
    Object get(String name,String key)從actionform中取得name對象的key對應的值。
    Map getMap() 返回對象中包含的對象屬性名列表。
    void remove(String name, String key) 刪除一個元素。
    void set(String name, int index,Object value) 對actionform中的屬性進行賦值。
    void set(String name,Object value)
    void set(String name, Strign key ,Object value)

    DynaValidatorform類
    org.apache.struts.validator.DynaValidatorform類繼承了DynaActionform類。使用本類可以方便的實現表單參數的校驗。在校驗的時候,使用在struts-config.xml中action元素中的name屬性,確定要在validation.xml中取得校驗規則的依據。
    至于校驗,同Validatorform。
    DynaValidatorform中的新增加的方法:
    int getPage()
    java.util.Map getResultvalueMap()
    ValidatorResults getValidatorResults()
    void setPage(int page)
    void setValidatorResults()

    DynaValidatorActionform類
    org.apache.struts.validator.DynaValidatorActionform類繼承了DynaValidatorform類。使用本類可以方便的實現表單參數的校驗。在校驗的時候,使用在struts-config.xml中action元素中的path屬性,確定要在validation.xml中取得校驗規則的依據。
    至于校驗,同Validatorform。

    ActionForward類
    ActionForward類繼承了org.apache.struts.config.ForwardConfig。
    ForwardConfig的方法:
    String getName() 虛名字
    String getPath() 實際路徑
    boolean getRedirect() 是否重定向
    void setName(String name)
    void setPath(String path)
    void setRedirect(boolean redirect)

    ActionForward目的是控制器將Action類的處理結果轉發至目的地。
    Action類獲得ActionForward實例的句柄,然后可用兩種方法返回到ActionServlet,
    ActionMapping實例被傳送到execute()方法,使用actionMapping的findForward(String name)根據名稱獲取一個全局轉發或本地轉發。
    另一種是調用下面的一個構造器來創建它們自己的一個實例:
    public ActionForward()
    public ActionForward(String path)
    public ActionForward(String path,Boolean redirect)
    public ActionForward(String name,String path,Boolean redirect)
    public ActionForward(String name,String path,Boolean redirect, boolean contextRelative)
    或下面的構造方法(下面是ActionForward的子類)
    ForwardingActionForward()
    ForwardingActionForward(String path) ?
    RedirectingActionForward()
    RedirectingActionForward(String path

    posted on 2006-06-02 18:14 MyJavaWorld 閱讀(826) 評論(2)  編輯  收藏

    評論:
    # re: struts 中常用得幾個類 2006-06-02 22:42 | littlebat
    歡迎交流struts  回復  更多評論
      
    # re: struts 中常用得幾個類 2006-06-04 12:42 | 藍色Saga
    挺詳細的呀  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲综合另类小说色区| 亚洲国产精品一区二区九九| 国产亚洲一区二区三区在线观看 | 亚洲精品第五页中文字幕| 日本特黄特色AAA大片免费| 亚洲黄色三级网站| 亚洲日韩在线中文字幕综合| 精品国产免费观看久久久| 亚洲欧美国产日韩av野草社区| 日韩免费观看一级毛片看看 | 精品女同一区二区三区免费播放| 黄网址在线永久免费观看| 亚洲av无码专区青青草原| 免费在线黄色网址| 丰满人妻一区二区三区免费视频 | 亚洲成年人啊啊aa在线观看| 免费无码专区毛片高潮喷水| 亚洲午夜福利精品久久 | 性短视频在线观看免费不卡流畅| 亚洲av无码不卡久久| 国产精品成人免费一区二区| 亚洲AV日韩AV一区二区三曲| 亚洲 综合 国产 欧洲 丝袜| 三级网站在线免费观看| 91在线亚洲精品专区| 动漫黄网站免费永久在线观看| 亚洲人成未满十八禁网站| 免费一级毛片在级播放| 免费在线观影网站| 亚洲成人福利网站| 日韩精品无码人妻免费视频| 香蕉免费在线视频| 亚洲精品人成电影网| 国产又大又长又粗又硬的免费视频| 一级一黄在线观看视频免费| 亚洲日本一区二区三区| 女人被男人桶得好爽免费视频| www永久免费视频| 亚洲国产精品综合一区在线| 免费在线看片网站| 足恋玩丝袜脚视频免费网站|