欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Struts中不同的Action和ActionForm組合
這是我轉的別人的總結,如果你英文還可以的話(huà)建議看下面的英文鏈接。


在TSS.com上看到一篇好文,有關(guān)Struts使用中各種不同的Action和ActionForm組合的利弊。我先消化一下,整理好,供大家參考。原文標題:Struts action mappings: Divide Et Impera,作者:Michael Juravlev。在TSS上的URL:</action>

首先,Struts的ActionServlet接收到一個(gè)請求,然后根據struts-config.xml的配置定位到相應的mapping(映射);接下來(lái)如果form的范圍是request或者在定義的范圍中找不到這個(gè)form,創(chuàng )建一個(gè)新的form實(shí)例;取得form實(shí)例以后,調用其reset()方法,然后將表單中的參數放入form,如果validate屬性不為false,調用validate()方法;如果validate()返回非空的ActionErrors,將會(huì )被轉到input屬性指定的URI,如果返回空的ActionErrors,那么執行Action的execute()方法,根據返回的ActionForward確定目標URI。

這樣做的效果是:execute()僅當validate()成功以后才執行;input屬性指定的是一個(gè)URI。


[2] 僅有Form的action

<action path="/aFormOnlyAction"
    type="org.apache.struts.actions.ForwardAction"
    name="someForm"
    input="someJSP.jsp"
    parameter="someOtherJSP.jsp"
/>

首先,Struts會(huì )在定義的scope搜尋someForm,如果找到則重用,如果找不到則新建一個(gè)實(shí)例;取得form實(shí)例以后,調用其reset()方法,然后將表單中的參數放入form,如果validate屬性不為false,調用validate()方法;如果validate()返回非空的ActionErrors,將會(huì )被轉到input屬性指定的URI,如果返回空的ActionErrors,那么轉到parameter屬性指定的目標URI。

這樣做的效果是:沒(méi)有action類(lèi)可以存放我們的業(yè)務(wù)邏輯,所以所有需要寫(xiě)入的邏輯都只能寫(xiě)到form的reset()或者validate()方法中。validate()的作用是驗證和訪(fǎng)問(wèn)業(yè)務(wù)層。因為這里的action映射不包括forward(也沒(méi)有意義),所以不能重定向,只能用默認的那個(gè)forward。這種僅有form的action可以用來(lái)處理數據獲取并forward到另一個(gè)JSP來(lái)顯示。


[3] 僅有Action的action

<action path="/anActionOnlyAction"
    type="somePackage.someActionClass">
    input="someJSP.jsp"
    <forward name="successful" path="someJSP.jsp"/>
    <forward name="failed" path="someOtherJSP.jsp"/>
</action>

首先,ActionServlet接收到請求后,取得action類(lèi)實(shí)例,調用execute()方法;然后根據返回的ActionForward在配置中找forward,forward到指定的URI或action。

這樣做的效果是:沒(méi)有form實(shí)例被傳入execute()方法,于是execute()必須自己從請求中獲取參數。Action可以被forward或者重定向。這種action不能處理通過(guò)HTML FORM提交的請求,只能處理鏈接式的請求。


[4] 僅有JSP的action

<action path="/aJSPOnlyAction"
    type="org.apache.struts.actions.ForwardAction"
    parameter="someOtherJSP.jsp"
/>

首先,ActionServlet接到請求后調用ForwardAction的execute()方法,execute()根據配置的parameter屬性值來(lái)forward到那個(gè)URI。

這樣做的效果是:沒(méi)有任何form被實(shí)例化,比較現實(shí)的情形可能是form在request更高級別的范圍中定義;或者這個(gè)action被用作在應用程序編譯好后充當系統參數,只需要更改這個(gè)配置文件而不需要重新編譯系統。


[5] 兩個(gè)action對應一個(gè)form

<action path="/anAction"
    type="somePackage.someActionClass">
    name="someForm"
    input="someJSP.jsp"
    <forward name="successful" path="/anotherAction.do"/>
</action>
<action path="/anotherAction"
    type="somePackage.someOtherActionClass">
    name="someForm"
    input="someOtherJSP.jsp"
    <forward name="successful" path="someResultJSP.jsp"/>
</action>

就每個(gè)單獨的action來(lái)講,處理上并沒(méi)有和完整的action有什么實(shí)質(zhì)的區別。這個(gè)組合模式可以被用來(lái)傳遞命令對象(form)。需要注意的是在后一個(gè)action中同樣會(huì )調用form的reset()和validate()方法,因此我們必須確保form中的信息不被重寫(xiě)。

處理的方式大致分為兩種:a) 在request中放入一個(gè)指示器表明前一個(gè)action有意向后一個(gè)action傳遞form,從而在后一個(gè)action可以保留那個(gè)form中的值,這一方式只能在使用forward時(shí)使用。b) 當使用redirect而不是forward時(shí),可以把指示器放在session或更高的級別,在命令鏈的最后一環(huán)將這個(gè)指示器清除。


[6] 兩個(gè)action對應兩個(gè)form

<action path="/anAction"
    type="somePackage.someActionClass">
    name="someForm"
    input="someJSP.jsp"
    <forward name="successful" path="/anotherAction.do" redirect="true"/>
</action>
<action path="/anotherAction"
    type="somePackage.someOtherActionClass">"
    name="someOtherForm"
    input="someOtherJSP.jsp"
    <forward name="successful" path="someResultJSP.jsp"/>
</action>

這個(gè)組合方式跟前一種在流程上沒(méi)有太大區別,只是我們現在對于兩個(gè)action分別提供了form,于是代碼看上去更加清晰。于是我們可以分別處理WEB應用程序的輸入和輸出。值得注意的是,后一個(gè)action同樣會(huì )嘗試往form中寫(xiě)入那些參數,不過(guò)我們可以這樣處理:a) 在后一個(gè)form中使用另一套屬性名;b) 只提供getter而不提供setter。

大致的處理是這樣:
前一個(gè)action接收輸入、驗證、然后將數據寫(xiě)入業(yè)務(wù)層或持久層,重定向到后一個(gè)action,后一個(gè)action手動(dòng)的從業(yè)務(wù)層/持久層取出數據,寫(xiě)入form(通過(guò)其他方式),交給前臺JSP顯示。

這樣做的好處是不必保留輸入form中的值,因此可以使用redirect而不是forward。這樣就降低了兩個(gè)action之間的耦合度,同時(shí)也避免了不必要的重復提交。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Struts的配置文件
struts1配置文件中action的常用屬性
Struts-config.xml配置文件《action-mappings》元素的詳解 -...
struts中DispatchAction的使用
struts1 問(wèn)題 報錯 集錦
在struts用重定向解決重復刷新而多次重復的提交表單的問(wèn)題 - yongtree的專(zhuān)欄 ...
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久