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

2021-06-17 00:13:48 字數 2168 閱讀 4919

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構架中的Session物件建立和控制

首先談一下對session物件在web開發中的建立以及sessionid生成並返回客戶端的執行機制.session物件當客戶端首次訪問時,建立乙個新的session物件.並同時生成乙個sessionid,並在此次響應中將sessionid以響應報文的方式些回客戶端瀏覽器記憶體或以重寫url方式送回客...

Struts構架中action的跳轉大全

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