Struts1.1發布了這麼長時間了,我才剛剛開始系統地學習Struts的相關知識,經過前一陣潛心研究,對Struts1.1中已有的類DispatchAction有了進一步的認識。我將在這裡總結一下,希望能對大家有所幫助。
在1.0版本中我們通常都是用execute方法來完成我們對業務邏輯的處理及頁面的轉發。通常在一個Action中我們都只能夠完成一種業務邏輯的操作。如果要是完成多個業務邏輯(比如:添加、刪除等)功能相近的業務邏輯我們就沒有辦法了麼?答案是否定的,我們可以通過在頁面中定義一個隱藏變量,在不同的頁面要求處理不同的業務邏輯的時候我們可以賦予這個變量不同的值,並在execute方法中通過對變量值的判斷來完成不同的業務邏輯操作。
舉例來說,我們首先在頁面中定義一個隱藏變量。
然後定義一個JavaScript函數,我們可以在通過點擊提交按鈕的時候,在函數體裡面修改它的值。
當我們點擊提交按鈕便觸發該事件,修改變量的值。
那我們在後台execute中又如何處理相關邏輯呢?
String operAt = myForm.getOperat();
if (Operat.equals("create")) { ...
if (Operat.equals("save")) { ...
很簡單吧!雖然說這樣做我們可以實現多個業務邏輯在同一個Action中實現,可是帶來的代價便是代碼的冗長,不易理解。
下面我們就要介紹一下DispatchAction類了。它是Action的一個子類,它可以實現多個業務邏輯在同一個Action當中的實現,而上面的例子在DispatchAction中也就變成了下面的形式:
public ActionForward create(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception { ...
public ActionForward save(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception { ...
每一種業務邏輯都能在DispatchAction當中找到對應的方法。那麼我們如何去實現這樣的調用呢?DispatchAction中對struts-config.XML的配置比一般的Action配置稍顯麻煩,舉例來講:
name="telForm" scope="request" validate="false" parameter="method"/>
我們在這裡指定了parameter的值為method,而當我們請求Action的時候我們必須指定method的值來確定去我們想要調用哪個Action方法。如:
http://localhost:8080/tsss/telConsle.do?method=save
顯然,通過顯示鏈接指定參數值的方法可以達到我們調用方法的目的。然而我們如果不想顯示調用的話我們應該怎樣處理呢?還記得前面講過的方法麼?我們在頁面中定義一個隱藏的變量,然後通過對變量的賦值來確定我們來確定我們將要執行的業務方法。在這裡我們可不可以一樣這樣使用呢?
答案是肯定的,我們當然可以通過定義一個類似於
怎麼樣?通過上面的論述,您是否能夠對DistpatchAction有了初步了解呢?關於DispatchAction用法小弟還是出此體驗,有什麼不足之處還希望各位大蝦能批評指點!