91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

jsp中action是什么

發布時間:2020-11-02 14:28:18 來源:億速云 閱讀:177 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關jsp中action是什么的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

 Action類是用戶請求和業務邏輯之間的橋梁,每個Action充當客戶的一項業務代理。在RequestProcessor類預處理請求時,在創建了Action的實例后,就調用自身的processActionPerform()方法,該方法在調用Action類的execute()。

下面介紹jsp中action的功能:

完整的action

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

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

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

僅有JSP的action

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

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

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

兩個action對應一個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>

就每個單獨的action來講,處理上并沒有和完整的action有什么實質的區分。這個組合模式能夠被用來傳遞命令對象(form)。需要注意的是在后一個action中同樣會調用form的reset()和validate()方法,因此我們必須確保form中的信息不被重寫。

處理的方式大致分為兩種:

a) 在request中放入一個指示器表明前一個action有意向后一個action傳遞form,從而在后一個action能夠保留那個form中的值,這一方式只能在使用forward時使用。

b) 當使用redirect而不是forward時,能夠把指示器放在session或更高的級別,在命令鏈的最后一環將這個指示器清除。

<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>

這個組合方式跟前一種在流程上沒有太大區分,只是我們現在對于兩個action分別提供了form,于是代碼看上去更加清楚。于是我們能夠分別處理WEB應用程式的輸入和輸出。

值得注意的是,后一個action同樣會嘗試往form中寫入那些參數,但是我們能夠這樣處理:

a) 在后一個form中使用另一套屬性名;

b) 只提供getter而不提供setter。

大致的處理是這樣:

前一個action接收輸入、驗證、然后將數據寫入業務層或持久層,重定向到后一個action,后一個action手動的從業務層/持久層取出數據,寫入form(通過其他方式),交給前臺JSP顯示。

這樣做的好處是不必保留輸入form中的值,因此能夠使用redirect而不是forward。這樣就降低了兩個action之間的耦合度,同時也避免了不必要的重復提交。

感謝各位的閱讀!關于jsp中action是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

道真| 化隆| 襄垣县| 耿马| 修水县| 行唐县| 雷山县| 根河市| 乐平市| 敖汉旗| 射洪县| 霍山县| 西华县| 呼玛县| 新闻| 阿瓦提县| 姚安县| 成安县| 苏州市| 徐闻县| 剑河县| 华坪县| 东乡| 洛隆县| 林甸县| 双鸭山市| 长岭县| 三明市| 洞口县| 佛山市| 义乌市| 邯郸县| 田东县| 邵阳县| 天祝| 武冈市| 衡南县| 瓦房店市| 澳门| 鹤壁市| 肥东县|