Struts構架中action的跳轉大全

2021-05-22 02:14:45 字數 2310 閱讀 1636

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的跳轉大全

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

struts2 action中result引數詳解

chain 用來處理action鏈 com.opensymphony.xwork2.actionchainresult dispatcher 用來轉向頁面,通常處理jsp org.apache.struts2.dispatcher.servletdispatcherresult freemaker ...