繼續總結Struts的第2天的學(xué)習成果!
今天剛一上課,吳老就又總結了下昨天的知識點(diǎn),并且,又給我們講了一遍Struts的加載流程。這個(gè)問(wèn)題在昨天的博客中已經(jīng)寫(xiě)到,今天就不具體描述了。
Struts的5個(gè)擴展點(diǎn):
1.ActionSerlet 擴充中央控制器
2.RequestProessor組件 請求處理器
3.ActionForm
4.Action
5.Plug in 插件
Struts視圖組件
提到Struts視圖組件那么就的提ActionForm了,ActionForm封裝了客戶(hù)端的請求信息,我們一般所用的就是一般的靜態(tài)Action,也就是說(shuō)我們的ActionForm必須創(chuàng )建出來(lái)。
ActionForm的生命周期:
ActionForm是在web服務(wù)器到傳遞給不同的Action的時(shí)候也就是它的生命周期了,其實(shí),我們可以看到我們的form對象的只能傳遞到Action里面,不能傳遞到我們的Model層了,那么,在A(yíng)ction中的時(shí)候我們就必須要轉換ActionForm對象到DTO(簡(jiǎn)單值對象),然后在繼續往下一層傳遞。
剛才提到了靜態(tài)的ActionForm對象,那么,可想而知肯定會(huì )有動(dòng)態(tài)的ActionForm了,當然,java提供了7種內置的ActionForm對象,今天就先熟悉一下我們的DynActionForm對象,動(dòng)態(tài)的ActionFrom對象配置更為簡(jiǎn)單,并且,不用創(chuàng )建formbean對象了。
好了,我們來(lái)看一下一個(gè)簡(jiǎn)單的動(dòng)態(tài)Form的配置吧,就拿今天的DynActionForm來(lái)說(shuō),示例:
<form-bean name="lovo"type="org.apache.struts.action.DynaActionForm">
屬性全部都在formbean里面直接配置,那么,這種書(shū)寫(xiě)formbean的方法感覺(jué)很良好,但是,它有很多缺點(diǎn),配置好了,那么我們的頁(yè)面如果改動(dòng)的話(huà)我們的action里面也需要改動(dòng)配置文件也需要改動(dòng),這樣就違反了開(kāi)閉原則了,并且,不支持validate代碼方式驗證。
既然說(shuō)到了formbean的驗證,那么就順便談?wù)剆truts的代碼方式的驗證。
我們需要做的是:
1.在A(yíng)ction的配置中需要配置兩項內容,
validate="true" 是否驗證為true
2.在我們的formbean中需要重寫(xiě)validate方法,那么我們來(lái)看一個(gè)最簡(jiǎn)單的驗證:
好了,我們來(lái)具體看看這句代碼的意思
errors.add("name",newActionMessage("error.login.name"));
errors是一個(gè)裝錯誤的容器,大眼一看就曉得是一個(gè)MAP集合了,那么,它的鍵是對應我們的jsp頁(yè)面顯示的property,值對應著(zhù)一條錯誤信息,我們會(huì )發(fā)現這條錯誤信息的參數看起來(lái)有點(diǎn)奇怪,其實(shí),它的參數對應著(zhù)國際化文件-ApplicationResources.properties的鍵,那么,我們來(lái)看看這個(gè)properties文件:
error.login.name=\u7528\u6237\u540D\u975E\u6CD5\uFF01我們知道了,它的鍵的來(lái)源,那么,它的value是從哪來(lái)的,其實(shí)它的值正好對應的是我們要提示的錯誤信息,這里我使用了utf-8編碼格式。
聯(lián)系客服