[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或更高的級別,在命令鏈的最後一環將這個指示器清除。
[6] 兩個action對應兩個form
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是單態的,所以要注意form的作用範圍。
設定為全域性變數的話,很可能出現資料遺留的問題,form的作用範圍最好設為方法私有
==================
說明:以上的關於action的只是最常用的,其他還有dispatcheraction lookupdispatcheraction等不是很常用。
Struts的action跳轉大全
struts的 action 跳轉 1 完整的action name someform input somejsp.jsp 首先,struts 的actionservlet 接收到乙個請求,然後根據 struts config.xml 的配置定位到相應的 對映 接下來如果 form 的範圍是 req...
Struts中action跳轉種類
1 完整的action name someform input somejsp.jsp 這樣做的效果是 execute 僅當validate 成功以後才執行 input屬性指定的是乙個uri。2 僅有form的action 首先,struts會在定義的scope搜尋someform,如果找到則重用,...
struts2 action 頁面跳轉
標籤 action struts2 redirect 舉報 1 type dispatcher 為預設,用於jsp頁面跳轉 index.jsp 完整的寫法為 index.jsp 2 type redirect 重定向到jsp action 外部 index.jsp login.do 重定向時帶引數處...