strust1.x中formbean的原理及作用


from:     http://blog.csdn.net/tuiroger/article/details/3947896

今天張老師講了一些比較重要的strust標簽,<html:link>,<html:text>。formbean的原理及作用,還有formbean表單校驗以及表單校驗后如何處理,並進行了舉例驗證說明,把例子代碼敲了一遍,頗有收獲。


<html:link>標簽的三個好處:
使用<html:link action=“/action”/>不用關心web應用程序的路徑和ActionServlet的映射路徑。
       可以自動在url后面附加jsessionid參數進行url重寫。可以用以下方法進行驗證。啟動一個新瀏覽器訪問第一個Action,查 看<html:link>生成的超鏈接地址,刷新后再查看這個超鏈接地址,比較差異可以看到<html:link>標簽的url 重寫功能。
       可以對參數信息進行url編碼。 另外: jtsl標簽<c:url>標准標簽也有<html:link>標簽的后兩個作用。
       在使用<html:link>標簽時需要注意的是:
     在<html:link>的action屬性值的路徑后中直接加參數,但是不能對其中的中文字符進行url編碼。
使用paramID和paramName等屬性設置一個參數,可以完成中文參數的url編碼。
可以使用name和property屬性來設置多個參數。

<html:text>必須放 在<html:form>標簽中,回顯時就是從那個<html:form>關聯的formbean中取出的數 據。<html:form>的action屬性用於指定它要關聯到的formbean。action屬性指定的Action類必須有它關聯的 formbean,否則會出異常。<html:form>會創建一個formbean,這樣其包含的<html:text>才會 從formbean中取數據進行回顯。在表單提交之前生成的formbean是空的,里面不包含數據。(張老師找到了源代碼進行說明)可以設置一個int 型的age在jsp頁面用<html:text>進行顯示,第一次打開頁面就顯示0,因為int型的默認值為0,也能夠驗證這個。
<html:text>的兩個作用,1,生成<input type="text">代碼,2,其property屬性的值填充進文本框。


formbean的工作原理
     如果某個Action關聯了一個FormBean,那么,當瀏覽器請求這個Action時,Struts框架將創建這個FormBean,把這個FormBean存儲在相應的Web域中,並用請求參數來填充這個formbean。
對於請求消息中的每個參數(包括網頁表單中的每個字段),其相關的ActionForm 通常都有一個對應的屬性來接受相應的參數值。
FormBean 表單校驗,formbean可以對填充其的每個參數進行校驗,校驗出錯了就返回到剛才填寫表單信息的頁面,並顯示上次填入的內容和錯誤提示信息。錯誤信息 和表單中原來填寫的數據是如何傳遞給jsp頁面呢? 把數據裝在一個對象中,再把對象存儲在request作用域中。這樣就可以在JSP頁面中取出Request域中是數據並進行顯示了。validate方 法返回的errors對象就是要給后面的jsp頁面顯示用的,errors對象中要存儲的就是要顯示錯誤信息,把errors存儲在request中,應 該使用request.setAttribute(“屬性名”,erros);存入的屬性名是一個固定的特殊名稱,這 樣<html:errors>才能使用這個屬性名從請求域中取錯誤。存儲的關鍵字是Globals.ERROR_KEY。  

 

 

Struts1 Action 屬性詳解

一、Struts的Action的一些屬性的具體意思?

Struts中Action的一段定義如下

<action>

attribute="aaForm"

input="/aa.jsp"

name="aaForm"

path="/aa"

scope="request"

type="com.yourcompany.struts.action.AaAction">

<forward name="aa" path="/aa.jsp" />

</action>

 

二、Struts中Action的屬性詳解

/*

attribute:指定ActionForm保存到指定上下文所使用的屬性名,如果不指定attribute屬性值,

將使用name屬性值作為保存時的屬性名。即attribute的默認值就是name屬性值。

input: 該Action中相關ActionForm獲取用戶輸入的輸入頁面,當將ActionForm設為自動驗證輸入數據,發現不合法數據返回錯誤時,將返回該頁面    

name: 當前Action中用到的ActionForm的名字,其具體信息在配置文件其他地方另有詳細定義

scop:指定保存ActionForm上下文的范圍。即Action中所用到的ActionForm的生存期,可以為“request”或“session”,隨着生存期的設置,該Action也會在相應的時間被創建    

validate:如果本屬性為true則在Action動作之前其對應的ActionForm的validate方法會自動被調用,一般用以驗證用戶輸入的數據    

forward:設置處理用戶請求的serverlet或其它資源如Jsp頁面等。如指定了這屬性則type屬性就會失去作用

嚴格來說<forward,include,type>屬性應該使用且只使用其中的一個。 這屬性用於跳轉到另一個非Action處理程序中。

unknown: 如果將該屬性設置為true,那么就是聲明這個Action將處理整個應用中所有未找到相應處理Action的請求,當然,一個應用系統中也只會有一個Action的unknown屬性可以設為true    

Prefix:用來匹配請求參數與bean屬性的前綴  

Suffix: 用來匹配請求參數與bean屬性的后綴  

*/

與scope有關,比如scope="request" 時,可以通過request.getAttribute(attribute的值)來獲取Form對象

而name對應於前面form的定義。forward 中的name可以說是頁面的一個別名,轉發時根據名字就行了

可以轉發多個,如定義了兩個forward success和error

<forward name="success" path="/aa.jsp" />

<forward name="error" path="/bb.jsp" />

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM