struts1 几种Action父类的比较
1.Action,其它類型的Action的父類,只能實現其中的 execute()方法來處理業務,缺點是,一個Action只能處理一個業務,不能自定義處理多個業務,所以一般很少用。
MappingDispatchAction為每個不同的處理方法都要在struts-config.xml配置對應的action而DispatchAction
只需要配置一個然后利用給parameter字段賦值來區分。從我做項目的經驗來說,使用MappingDispatchAction恐怕是
最方便最直接了,因為它最容易調試。因為根據form提交的action的不同就可以區分不同的方法(例如增加,刪除,修
改)但是缺點就是會是配置文件的內容變多,而DispatchAction方法的配置看上去比較簡潔,每種方法各有千秋。
5.DispatcherAction 類
DispatcherAction:能夠在同一個 Action 類中完成一組相關的業務操作,以達到減少重復編程,使程序更加便于維護。
創建一個擴展 DispatchAction 類的子類,不必覆蓋 excute() 方法,而是創建一些實現業務邏輯的方法,這些業務邏輯方法都應該和 excute() 方法具有相同的方法簽名,即它們的參數和返回類型都應該相同,此外也應該聲明拋出Exception 異常.
在配置 DispatchAction 類時,需要把 parameter 屬性的值設置為”method”.
把 parameter 的屬性配置為”method”后,當用戶請求訪問 DispatchAction 時,應該提供 method 請求參數.例如:
? http://localhost:9090/test/test?method=add
<action>的parameter屬性:指定 Action 的配置參數。在Action類的 excute() 方法中,可以調用 ActionMapping 對象的 getParameter() 方法來讀取配置參數
6.LookupDispatchAction 類
LookupDispatchAction 類:DispatcherAction 的子類,在該類中可以定義多個業務方法,適用于一個表單中有多個提交按鈕,且這些按鈕又都有一個共同名字的場合。
它與DispatchAction類的作用差不多,唯一不同的是:這個類是通過資源包中的key作為請求參數來進行對方法的映射,而DispatchAction是通過請求參數來選擇方法.
LookupDispatchAction的用法:
用MessageResource將按鈕的文本和ResKey相關聯
在Action配置中一個parametr屬性,屬性值與submit按鈕的property屬性值相同,這個屬性可以指定執行LookupDispatchAction中對應的方法??
繼承LookupDispatchAction,重寫getKeyMethodMap()方法, 將ResKey和MethodName對應起來?
DispatchAction 類使用請求參數的值確定調用哪種方法,而LookupDispatchAction類利用請求參數值,反向查詢資源綁定,并將它與類中的一種方法匹配,這兩種方法有異曲同工之妙。?
7.MappingDispatchAction 類
該類是 DispatchAction的子類,用于將相關的請求組織到一個Action之中。
MappingDispatchAction的用法:
將一個 MappingDispatchAction 類根據不同的請求進行多次聲明,其中path屬性因請求的不同而不同,并為每個 action 添加 parameter 屬性來指定相同 Action 類處理不同請求的方法名
創建一個擴展 MappingDispatchAction 類的子類,不必覆蓋 excute() 方法,而是創建一些實現業務邏輯的方法,這些業務邏輯方法都應該和 excute() 方法具有相同的方法簽名,即它們的參數和返回類型都應該相同,此外也應該聲明拋出Exception 異常.
與DispatcherAction的區別:
MappingDispatcherAction:當想要為相同的Action定義多個表單操作處理器的時候,使用它
DispatcherAction:如果基于某種理由不想要定義多個表單操作處理器的時候,使用它
轉載于:https://www.cnblogs.com/gywbg/archive/2012/04/20/2459338.html
總結
以上是生活随笔為你收集整理的struts1 几种Action父类的比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 装饰者模式之我见
- 下一篇: JQuery中ajax方法访问web服务