Struts的action跳轉大全

2021-04-13 22:16:21 字數 4161 閱讀 2802

:struts的

action

跳轉[1]

完整的action

name="someform"

input="somejsp.jsp"

首先,struts

的actionservlet

接收到乙個請求,然後根據

struts-config.xml

的配置定位到相應的

(對映);接下來如果

form

的範圍是

request

或者在定義的範圍中找不到這個

form

,建立乙個新的

form

例項;取得

form

例項以後,呼叫其

reset ()

方法,然後將表單中的引數放入

form

,如果validate

屬性不為

false

,呼叫validate()

方法;如果

validate()

返回非空的

actionerrors

,將會被轉到

input

屬性指定的

uri,如果返回空的

actionerrors

,那麼執行

action

的execute()

方法,根據返回的

actionforward

確定目標

uri。

這樣做的效果是:

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

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,如果找到則重用,...

struts2 action 頁面跳轉

標籤 action struts2 redirect 舉報 1 type dispatcher 為預設,用於jsp頁面跳轉 index.jsp 完整的寫法為 index.jsp 2 type redirect 重定向到jsp action 外部 index.jsp login.do 重定向時帶引數處...