04Struts1(擴(kuò)展控制器)_第1頁
04Struts1(擴(kuò)展控制器)_第2頁
04Struts1(擴(kuò)展控制器)_第3頁
免費(fèi)預(yù)覽已結(jié)束,剩余22頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Version 1.0Struts 1x(四)擴(kuò)展控制器課程介紹r;嚴(yán)" 本課程主要講授Stmts 1.x基礎(chǔ)知識 適用于Java開發(fā)工程師 面向的學(xué)員是對Servlet, JSP有基本了解的J2EE開發(fā)工程師全部課程時(shí)間大約是40分鐘概要理解Struts框架的初始化流程理解Struts框架的響應(yīng)客戶請求的流程創(chuàng)建Actio n類理解業(yè)務(wù)邏輯驗(yàn)證的流程Struts控制器組件 Struts控制器組件主要包括:- Action Servlet組件:充當(dāng)Struts框架的中央控制 器-Requestprocessor組件:充當(dāng)每個(gè)子應(yīng)用模塊 的請求處理器- Action組件:負(fù)責(zé)處理一項(xiàng)具

2、體的業(yè)務(wù)Struts控制器組件的類框圖(b jiiiI多應(yīng)用模塊多應(yīng)用模塊指同一個(gè)應(yīng)用包含多個(gè)子應(yīng)用,每個(gè) 子應(yīng)用可以處理相關(guān)的一組功能。例如,對于網(wǎng) 上購物應(yīng)用,可以由一個(gè)子應(yīng)用來處理商品和商 品目錄信息,再由另一個(gè)子應(yīng)用處理購物車和訂 單信息。把應(yīng)用劃分成多個(gè)模塊,可以簡化應(yīng)用的并行開 發(fā)過程,縮短開發(fā)周期。所有的子應(yīng)用都共享同一個(gè)ActionServlet實(shí)例, 但每個(gè)子應(yīng)用有單獨(dú)的配置文件和 Requestprocessor 實(shí)例。多應(yīng)用模塊weh.xtnlStruts框架初始化流程 Servlet容器會(huì)在ActionServlet被加載后立 即執(zhí)行它的init()方法,以下是 Act

3、ionServlet的init()方法完成的初始化操 作:- (1)調(diào)用initlnternal()方法,初始化Struts框架內(nèi)在的消息資源, 如與系統(tǒng)日志相關(guān)的通知、警告和錯(cuò)誤消息。- (2)調(diào)fflinitOther()方法,從web.xml文件中加載ActionServlet 的初始化參數(shù),女nconfig參數(shù)。- (3)調(diào)fflinitServlet()方法,從web.xml文件中加載 ActionServlet的URL喚射信息。此外,還會(huì)注冊web.xml和Struts 配置文件所使用的DTD文件。這些DTD文件用來驗(yàn)證web.xml和 Struts配置文件的語法。Struts框架

4、初始化流程(4)調(diào)用initModuleConfigQ方法,加載并解析默認(rèn)子應(yīng)用模 塊的Struts配晝文件,創(chuàng)建ModuleConfig對象,抱它存褊在 ServletContext 中。- (5)調(diào)用initModuleMessageResources()方法,加載并初始化 默認(rèn)子應(yīng)用模塊的消息資滅 創(chuàng)建MessageResources對象,把 它存儲在ServletContext中。- (6)調(diào)用initModuleDataSources0方法,加載并初始化默認(rèn)子 應(yīng)用模塊的數(shù)據(jù)源。如果在Struts置文件中沒有定義vdata sources元素,就忽略這一步驟。-(7)調(diào)用initMo

5、dulePlugins()方法,加載并初始化默認(rèn)子應(yīng)用 模塊的所有插件。-(8)當(dāng)默認(rèn)子應(yīng)用模塊被成功的初始化后,如果還包括其他子 應(yīng)用模塊,將重復(fù)步驟(4)到步驟(7),分別對其他子應(yīng)用 模塊進(jìn)行初始化。周甫(zoofchow)Struts框架初始化流程ActionSer/letStruts框架響應(yīng)客戶請求的流程ActionServlet 的 process ()方法當(dāng)ActionServlet實(shí)例接收到HTTP請求后,在doGet()或doPost()方法中都會(huì)詬 用process()方法來處理請隸。IU F是ActionServlet的pocess()芳法的源代碼:protected v

6、oid process( HttpServletRequest request, HttpServletResponse response) throws IOException, ServletExceptionIModulelltils.getlnstance().selectModule(requestz getServletContext(); getRequestProcessor(getModuleConfig(request).process(request, resp on se);12周甫(zoofchow)Action 類的 execute()方法7;public Acti

7、onForward execute(ActionMapping mapping? ActionFonn form,HttpServletRequest request, HttpServletResponse response)throws IOExceptior ServletException ;Action類的execute()方法的參數(shù)和返回值 execute()方法包含以下參數(shù):-ActionMapping:包含了這個(gè)Action的配置信息,和 struts-config.xml 文件中的 v actio n> 元素對應(yīng)。-Action Form:包含了用戶的表單數(shù)據(jù),當(dāng)Str

8、uts框架調(diào) 用execute()方法時(shí),Action Form中的數(shù)據(jù)已經(jīng)通過了 表單驗(yàn)證。- HttpServletRequest:當(dāng)前的 HTTP請求對象- HttpServletResponse:當(dāng)前的 HTTP響應(yīng)對象 Action類的execute()方法返回ActionForward對象,它包含 了請求轉(zhuǎn)發(fā)路徑信息。訪問Resource BundleMessageResources messages 二 getResources(request); 在 Actio n 類 中 定義了 getResources(HttpServletRequestrequest)方法,該方法返回當(dāng)

9、前默認(rèn)MlMessageResources對象,它封裝了 Resource Bundle中 的文本內(nèi)容。接下來Action類就可以通過MessageResources對象來 訪問文本內(nèi)容。例如,如果要讀取消息key為“hello.jsp力tie”對應(yīng)的文本內(nèi)容,可以調(diào)用MessageResources類的getMessage(String key)方法:String title=messages.getMessage("hello.jsp.title");業(yè)務(wù)邏輯驗(yàn)證流程如果用戶輸入的姓名為“Andy”,將創(chuàng)建包含錯(cuò)誤信息的ActionMessage 對象,Action M

10、essage 對象被保存到 Actio nMessages 對象中。接下來調(diào)用在Action基類中定義的saveErrors()方法,它 負(fù)責(zé)把Action Messages對象保存到request范ill內(nèi)。 最后返回Actio nFo rwa rd對象 Struts框架會(huì)根據(jù)ActionForward對象包含的轉(zhuǎn)發(fā)信息把 請求轉(zhuǎn)發(fā)到恰當(dāng)?shù)囊晥D組件視圖組件通過v html :errors標(biāo)簽把request范圍內(nèi)的 ActionMessages對象中包含的錯(cuò)誤消息顯示岀來,提示 用戶修改錯(cuò)誤。16周甫(zoofchow)消息類的類框圖訪問模型組件IIr i I| I UserDAO user

11、dao 二 new UserDAO()user.setName(Name);User 二 userdao.findByName( user); UserDAO代表業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯向視圖組件傳遞數(shù)據(jù)request.setAttribute( "userinfo", user); session.setAttribute( Uuserinfo; user );以上代碼完成:-把user對象保存在request范圍內(nèi)。-把user對象保存在session范圍內(nèi)。把HTTP請求轉(zhuǎn)發(fā)給合適的視圖組件/ Forward control to the specified success

12、 URI return (mapping.findForward(uuserinfo”);20周甫(zoofchow)在配置文件中作了如下配置:<action path type name="/useri nfo”=".struts.UserActio nH=uUserFormnscope = "request" validate = "true"input=“ /search.jsp"><forward name=uuserinfo" path="/userinfo.jsp” /> </actio n>練習(xí)題1問題:以下哪些說法是正確的?選項(xiàng):-(A)每個(gè)HTTP請求對應(yīng)一個(gè)單獨(dú)的Action Servlet實(shí)例-(B)對于每個(gè)請求訪問HelioAction的HTTP請求, Strutsli架會(huì)創(chuàng)建一個(gè)單獨(dú)的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論