成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳細介紹jsp中action的功能

開發 后端
本文介紹的是JSP中的action屬性的功能,適合初學者閱讀,希望對你有幫助,一起來看。

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

1. 完整的action

 

  1. <action path="/aFullAction" 
  2. type="somePackage.someActionClass">  
  3. name="someForm" 
  4. input="someJSP.jsp" 
  5. <forward name="successful" path="someJSP.jsp"/>  
  6. <forward name="failed" path="someOtherJSP.jsp"/>  
  7. </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。

2. 僅有Form的action

 

  1. <action path="/aFormOnlyAction" 
  2. type="org.apache.struts.actions.ForwardAction" 
  3. name="someForm" 
  4. input="someJSP.jsp" 
  5. parameter="someOtherJSP.jsp" 
  6. /> 

 

首先,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

 

  1. <action path="/anActionOnlyAction" 
  2. type="somePackage.someActionClass">  
  3. input="someJSP.jsp" 
  4. <forward name="successful" path="someJSP.jsp"/>  
  5. <forward name="failed" path="someOtherJSP.jsp"/>  
  6. </action> 

 

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

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

4. 僅有JSP的action

 

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

 

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

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

5. 兩個action對應一個form

 

  1. <action path="/anAction" 
  2. type="somePackage.someActionClass">  
  3. name="someForm" 
  4. input="someJSP.jsp" 
  5. <forward name="successful" path="/anotherAction.do"/>  
  6. </action>  
  7. <action path="/anotherAction" 
  8. type="somePackage.someOtherActionClass">  
  9. name="someForm" 
  10. input="someOtherJSP.jsp" 
  11. <forward name="successful" path="someResultJSP.jsp"/>  
  12. </action> 

 

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

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

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

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

 

  1. <action path="/anAction" 
  2. type="somePackage.someActionClass">  
  3. name="someForm" 
  4. input="someJSP.jsp" 
  5. <forward name="successful" path="/anotherAction.do" redirect="true"/>  
  6. </action>  
  7. <action path="/anotherAction" 
  8. type="somePackage.someOtherActionClass">"  
  9. name="someOtherForm" 
  10. input="someOtherJSP.jsp" 
  11. <forward name="successful" path="someResultJSP.jsp"/>  
  12. </action> 

 

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

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

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

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

大致的處理是這樣:

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

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

【編輯推薦】

  1. JSP虛擬主機使用中的亂碼問題
  2. JSP動態網站環境搭建應用中的詳細步驟
  3. jsp速度優化七種方法
  4. 詳細了解JSP中九個隱含對象
  5. 詳細介紹JSP技術的兩種架構模型
責任編輯:于鐵 來源: 互聯網
相關推薦

2009-03-17 16:18:51

JspActionStruts

2009-07-06 15:31:42

JSP Action

2011-07-08 16:54:39

JspCookies

2009-07-16 16:08:30

WebWork Act

2009-06-06 18:43:34

JSP Action

2010-03-16 13:04:17

Python環境

2009-07-01 10:12:40

JSP環境配置JSP引擎

2009-09-02 09:44:01

JSP和JavaBea

2009-07-03 18:31:04

JSP表達式

2009-07-03 11:21:43

Servlet和JSPJSP路徑

2011-07-07 14:14:41

PHP模版

2010-03-05 16:58:02

Android Mar

2009-11-26 17:21:41

軟路由upnp

2012-08-08 17:13:43

Word 2013

2011-06-07 11:14:51

JAVAJSP

2011-06-21 14:25:44

JavaScriptcookie

2009-11-18 13:11:29

PHP核心

2011-06-15 13:07:10

JSP和JavaBea

2011-06-16 14:49:39

HTML5

2009-06-17 16:01:28

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩综合在线 | 99精品国产一区二区三区 | 尹人av | 毛片一区二区三区 | 成人av片在线观看 | 欧美专区在线 | 久草在线视频中文 | 亚洲一区二区三区免费视频 | av国产精品| 中文字幕一区二区三区四区五区 | 成人亚洲综合 | a在线观看 | 亚洲精品电影网在线观看 | 国产高清视频一区 | 国产精品一区在线观看 | www.国产精 | 亚洲国产精品激情在线观看 | 亚洲区一区二区 | 一区二区三区四区在线免费观看 | 黑人精品xxx一区一二区 | 日韩欧美在线播放 | 国产精品亚洲欧美日韩一区在线 | 亚洲精品www久久久 www.蜜桃av | 日韩精品一区二区三区中文字幕 | 亚洲在线一区二区 | 91久操网| 精精国产视频 | 国产精品美女久久久久久免费 | 成人精品久久日伦片大全免费 | 九九亚洲| 亚洲视频中文字幕 | 欧美激情一区二区三级高清视频 | 欧美乱做爰xxxⅹ久久久 | 91精品一区二区三区久久久久久 | 日韩高清中文字幕 | 日本精品久久久久久久 | 国产一区二区三区四区三区四 | 亚洲国产精品一区二区久久 | 黄色香蕉视频在线观看 | 国产成人小视频 | 国产成人福利视频 |