Struts中action跳轉種類

2021-08-23 13:02:34 字數 2204 閱讀 8665

1、完整的action

name="someform"input="somejsp.jsp"

這樣做的效果是:execute()僅當validate()成功以後才執行;input屬性指定的是乙個uri。

2、僅有form的action

首先,struts會在定義的scope搜尋someform,如果找到則重用,如果找不到則新建乙個例項;取得form例項以後,呼叫其reset()方法,然後將表單中的引數放入form,如果validate屬性不為false,呼叫validate()方法;如果validate()返回非空的 actionerrors,將會被轉到input屬性指定的uri,如果返回空的actionerrors,那麼轉到parameter屬性指定的目標 uri。

這樣做的效果是:沒有action類可以存放我們的業務邏輯,所以所有需要寫入的邏輯都只能寫到form的reset()或者 validate()方法中。validate()的作用是驗證和訪問業務層。因為這裡的action對映不包括forward(也沒有意義),所以不能重定向,只能用預設的那個forward。這種僅有form的action可以用來處理資料獲取並forward到另乙個jsp來顯示。

3、僅有action的action

input="somejsp.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

name="someform"input="somejsp.jsp"

name="someform"input="someotherjsp.jsp"

就每個單獨的action來講,處理上並沒有和完整的action有什麼實質的區別。這個組合模式可以被用來傳遞命令物件(form)。需要注意的是在後乙個action中同樣會呼叫form的reset()和validate()方法,因此我們必須確保form中的資訊不被重寫。

處理的方式大致分為兩種:

a)在request中放入乙個指示器表明前乙個action有意向後乙個action傳遞form,從而在後乙個action可以保留那個form中的值,這一方式只能在使用forward時使用。b)當使用redirect而不是forward時,可以把指示器放在session或更高的級別,在命令鏈的最後一環將這個指示器清除。

name="someform"input="somejsp.jsp"

"name="someotherform"input="someotherjsp.jsp"

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

大致的處理是這樣:

前乙個action接收輸入、驗證、然後將資料寫入業務層或持久層,重定向到後乙個action,後乙個action手動的從業務層/持久層取出資料,寫入form(通過其他方式),交給前台jsp顯示。

這樣做的好處是不必保留輸入form中的值,因此可以使用redirect而不是forward。這樣就降低了兩個action之間的耦合度,同時也避免了不必要的重複提交。

Struts構架中action的跳轉大全

1 完整的action name someform input somejsp.jsp 這樣做的效果是 execute 僅當validate 成功以後才執行 input屬性指定的是乙個uri。2 僅有form的action 首先,struts會在定義的scope搜尋someform,如果找到則重用,...

講解Struts構架中action的跳轉大全

1.完整的action name someform input somejsp.jsp 這樣做的效果是 execute 僅當validate 成功以後才執行 input屬性指定的是乙個uri。2.僅有form的action 首先,struts會在定義的scope搜尋someform,如果找到則重用,...

Struts構架中action的跳轉大全

name someform input somejsp.jsp 這樣做的效果是 execute 僅當validate 成功以後才執行 input屬性指定的是乙個uri。2.僅有form的action 首先,struts會在定義的scope搜尋someform,如果找到則重用,如果找不到則新建乙個例項...