介紹Struts Action的多種角色

2021-08-24 22:03:17 字數 1865 閱讀 3696

action類是使用者請求和業務邏輯之間的橋梁。每個action充當使用者的一項業務**。在   requestprocessor類預處理請求時,在建立了action的例項後,就呼叫自身的processactionperform()方法,該方 法再呼叫action類的execute()方法。 action的execute()方法呼叫模型的業務方法,完成使用者請求的業務邏輯,然後根據執行結果把請求**給其他合適的web元件。在實際的應用 中,主要有以下幾種比較常見的使用方法:

1.普通的action應用

name=」oneform」

input=」page.jsp」

actionservlet 接收到請求後,取得action類例項,呼叫execute()方法;然後根據返回的actionforward在配置中找   forward,forward到指定的uri或action。這樣就沒有form例項被傳入execute()方法,於是execute()必須自己從 請求中獲取引數。action可以被forward或者重定向。這種action不能處理通過html   form提交的請求,只能處理鏈結式的請求。

4.僅有jsp的action應用

actionservlet 接到請求後呼叫forwardaction的execute()方法,execute()根據配置的parameter屬性值來forward到那個 uri。這種情況下,沒有任何form被例項化,比較現實的情形可能是form在request更高階別的範圍中定義;或者這個   action被用作在應用程式編譯好後充當系統引數,只需要更改這個配置檔案而不需要重新編譯系統。

5.兩個action對應乙個form(和第四種方式部分的action作用相近)

name=」oneform」

input=」one.jsp」

name=」oneform」

input=」another.jsp」

這個組合模式可以被用來傳遞form物件,就每個單獨的action來講,處理上並沒有和完整的action有什麼實質的區別。需要注意的是在後乙個   action中同樣會呼叫form的reset()和validate()方法,因此我們必須確保form中的資訊不被重寫。這種情況分兩種方式處 理:   a)   在request中放入乙個指示器表明前乙個action有意向後乙個action傳遞form,從而在後乙個action可以保留那個form中的值, 這一方式只能在使用forward時使用。b)   當使用redirect而不是forward時,可以把指示器放在 session或更高的級別,在命令鏈的最後一環將這個指示器清除。

6.兩個action對應兩個form

name=」oneform」

input=」one.jsp」

」name=」anotherform」

input=」another.jsp」

這個組合方式跟前一種在流程上沒有太大區別,只是我們現在對於兩個action分別提供了form,於是**看上去更加清晰。於是我們可以分別處理 web   應用程式的輸入和輸出。值得注意的是,後乙個action同樣會嘗試往form中寫入那些引數,不過我們可以這樣處理:a)   在後乙個 form中使用另一套屬性名;b)   只提供getter而不提供setter。

基本處理過程:

前乙個action接收輸入、驗證、然後將資料寫入業務層或持久層,重定向到後乙個action,後乙個action手動的從業務層/持久層取出資料,寫 入 form(通過其他方式),交給前台jsp顯示。這樣做的好處是不必保留輸入form中的值,因此可以使用redirect而不是forward。這樣就 降低了兩個action之間的耦合度,同時也避免了不必要的重複提交。

註明:文中所提及的「僅有form」指的是沒有繼承struts提供的action類,而是直接使用了struts自身提供的action類;「僅有action」指的是僅繼承了struts提供的action類而沒有使用form。

Struts Action的多種角色

action類是使用者請求和業務邏輯之間的橋梁。每個action充當使用者的一項業務 在requestprocessor類預處理請求時,在建立了action的例項後,就呼叫自身的processactionperform 方法,該方法再呼叫action類的execute 方法。action的execu...

struts Action獲取表單的幾種方式

struts2 的action獲取表單的幾種方式 01.action 直接通過get set方法獲取。public class sysaction extends actionsupport public string getusername public void setusername stri...

ipython介紹 IPython的介紹與使用

1 ipython簡介 ipython是乙個python的互動式shell,比預設的python shell好用得多,支援變數自動補全,自動縮排,支援bash shell命令,內建了許多很有用的功能和函式。學習ipython將會讓我們以一種更高的效率來使用python。同時它也是利用python進行...