![JavaWeb程序設(shè)計(jì) 課件 ch14 MVC 和 Struts2 基本原理_第1頁](http://file4.renrendoc.com/view3/M02/34/3C/wKhkFmYbkW-AOHwhAAEhpopHMGc300.jpg)
![JavaWeb程序設(shè)計(jì) 課件 ch14 MVC 和 Struts2 基本原理_第2頁](http://file4.renrendoc.com/view3/M02/34/3C/wKhkFmYbkW-AOHwhAAEhpopHMGc3002.jpg)
![JavaWeb程序設(shè)計(jì) 課件 ch14 MVC 和 Struts2 基本原理_第3頁](http://file4.renrendoc.com/view3/M02/34/3C/wKhkFmYbkW-AOHwhAAEhpopHMGc3003.jpg)
![JavaWeb程序設(shè)計(jì) 課件 ch14 MVC 和 Struts2 基本原理_第4頁](http://file4.renrendoc.com/view3/M02/34/3C/wKhkFmYbkW-AOHwhAAEhpopHMGc3004.jpg)
![JavaWeb程序設(shè)計(jì) 課件 ch14 MVC 和 Struts2 基本原理_第5頁](http://file4.renrendoc.com/view3/M02/34/3C/wKhkFmYbkW-AOHwhAAEhpopHMGc3005.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第14章MVC和Struts2基本原理本課教學(xué)內(nèi)容MVC模式Struts2簡介Struts2的基本原理Struts2的基本使用方法其他問題MVC和Strut2s基本原理MVC模式 MVC(Model、View、Controller),是軟件開發(fā)過程中比較流行的設(shè)計(jì)思想。在了解MVC之前,首先要明確一點(diǎn),MVC是一種設(shè)計(jì)模式(設(shè)計(jì)思想),不是一種編程技術(shù)MVC模式MVC思想:
編寫JSP,負(fù)責(zé)輸入查詢代碼,提交到Servlet,Servlet進(jìn)行安全驗(yàn)證,調(diào)用Dao來訪問數(shù)據(jù)庫,得到結(jié)果,跳轉(zhuǎn)到JSP顯示MVC思想MVC思想如圖MVC思想工作步驟為:用戶在表單中輸入,表單提交給Servlet,Servlet驗(yàn)證輸入,然后實(shí)例化JavaBeanJavaBean查詢數(shù)據(jù)庫,查詢結(jié)果暫存在JavaBean中Servlet跳轉(zhuǎn)到JSP,JSP使用JavaBean,得到它里面的查詢結(jié)果,并顯示出來Struts2簡介因?yàn)橐獙VC模式來進(jìn)行標(biāo)準(zhǔn)化,讓程序員在某個(gè)標(biāo)準(zhǔn)下進(jìn)行開發(fā)。很多人致力于這個(gè)工作,并且發(fā)布了一些框架,Struts就是這樣一個(gè)框架,在使用的過程中,受到了廣泛的承認(rèn)。可以說,Struts是為了規(guī)范MVC開發(fā)而發(fā)布的一個(gè)框架。大多數(shù)框架的版本改進(jìn),一般是在原有的基礎(chǔ)上增加功能或者進(jìn)行優(yōu)化,而Struts2不單如此。Struts2簡介Struts2是Struts的下一代框架,并不是新發(fā)布的新框架,但是它是另一個(gè)非常流行的框架:WebWork基礎(chǔ)上發(fā)展起來的??梢哉f,Struts2和WebWork非常類似。并且Struts2吸收了Struts1和WebWork兩者的優(yōu)勢,因此也是一個(gè)非常優(yōu)秀的框架Struts2簡介Struts2和Struts1具有一些不同點(diǎn),主要集中在以下方面:1. Action類的編寫:在Struts1中,Action類一般繼承基類org.apache.struts.action.Action。而在Struts2中,Action類可以實(shí)現(xiàn)一個(gè)Action接口,也可實(shí)現(xiàn)其他接口,也可以繼承ActionSupport基類,甚至不需要實(shí)現(xiàn)任何接口,只編寫execute函數(shù)即可Struts2簡介2.Action的運(yùn)行模式:Struts1中,Action是單態(tài)的,系統(tǒng)實(shí)例化一個(gè)對象來處理多個(gè)請求,為每個(gè)請求分配一個(gè)線程,在該線程中運(yùn)行execute函數(shù)。因此,在開發(fā)時(shí)需要特別小心,Action資源必須是線程安全的或同步的。但是,Struts2中,Action為每一個(gè)請求產(chǎn)生一個(gè)實(shí)例,不會(huì)產(chǎn)生線程安全問題。但是,系統(tǒng)又能夠及時(shí)回收垃圾資源,不會(huì)有廢棄空間的問題Struts2簡介3.
對Web容器的依賴:Struts1中,Action的execute函數(shù)內(nèi),傳入了ServletAPI:HttpServletRequest和HttpServletResponse,使得測試必須依賴于Web容器。但是,在Struts2中,可以不傳入HttpServletRequest和HttpServletResponse,但是也可以訪問它們,因此,Action不依賴于容器,允許Action脫離容器單獨(dú)被測試Struts2簡介4.對表單數(shù)據(jù)的封裝:Struts1中,使用ActionForm來封裝表單數(shù)據(jù),所有的ActionForm必須繼承org.apache.strtus.action.ActionForm,有可能造成ActionForm類和VO類重復(fù)編碼。但是,Struts2中,直接在Action中編寫表單數(shù)據(jù)相對應(yīng)的屬性,可以不用編寫ActionForm,而這些屬性又可以通過Web頁面上的標(biāo)簽訪問Struts2的基本原理環(huán)境配置要編寫基于Struts2的應(yīng)用,需要導(dǎo)入一些支持的包,也就是Struts2開發(fā)包。這些開發(fā)包可以到網(wǎng)上去下載。下載地址為:/Struts2的基本原理在Struts2中,常用的的組件有:FilterDispatcher過濾器、JSP、Action、JavaBean、配置文件等。對于一個(gè)動(dòng)作,其執(zhí)行步驟為:1.用戶輸入,JSP表單的請求被FilterDispatcher截獲Struts2的基本原理2.FilterDispatcher將表單信息轉(zhuǎn)交給Action,并封裝在Action內(nèi)3.Action來調(diào)用JavaBean(DAO)4.Action返回要跳轉(zhuǎn)到的JSP頁面邏輯名稱給框架5.框架根據(jù)邏輯名稱找到相應(yīng)的網(wǎng)頁地址,進(jìn)行跳轉(zhuǎn),結(jié)果在JSP上顯示Struts2的基本使用方法
該部分內(nèi)容使用實(shí)際案例進(jìn)行講解。在學(xué)生管理系統(tǒng)中,用戶輸入賬號密碼進(jìn)行登錄,如果登錄成功,就跳轉(zhuǎn)到成功頁面,否則跳轉(zhuǎn)到失敗頁面。為了簡便起
見,認(rèn)為賬號密碼相等就登錄成功。Struts2的基本使用方法導(dǎo)入Struts2
將右邊幾個(gè)包拷貝到項(xiàng)目中WEB-INF中的lib目錄下:然后配置web.xml文件編寫JSP*具體代碼示例詳見課本編寫并配置ActionForm在Struts1.x中,必須要單獨(dú)建立一個(gè)ActionForm類,而在Struts2中ActionForm和Action已經(jīng)合二為一了。因此,只需要將和表單元素同名的屬性編寫到Action內(nèi)。編寫并配置ActionFormLoginAction沒有繼承任何類,它有屬性account和password,與login.jsp中的表單元素account與password必須同名編寫并配置ActionStruts2中,既然Action和ActionForm合二為一,Action是負(fù)責(zé)業(yè)務(wù)邏輯的,所以必須編寫業(yè)務(wù)邏輯代碼。下面來加強(qiáng)Action的功能。要能夠處理業(yè)務(wù)邏輯,必須要滿足一個(gè)規(guī)范,那就是:編寫execute方法來處理業(yè)務(wù)邏輯。注意,不是重寫,是編寫。并且該方法不需要有任何的參數(shù)編寫并配置Action編寫execute方法,是因?yàn)锳ction接收數(shù)據(jù)后,由框架自動(dòng)調(diào)用它的execute方法,該方法的運(yùn)行,在底層通過反射機(jī)制進(jìn)行。execute的格式為:
publicStringexecute(){}該函數(shù)返回一個(gè)字符串,表示的是目標(biāo)頁面的虛擬名稱編寫并配置Action配置文件<struts><packagename="struts2"extends="struts-default"> <actionname="login"class="prj14.LoginAction"> <resultname="success">/loginSuccess.jsp</result> <resultname="fail">/loginFail.jsp</result> </action> </package> </struts>編寫并配置Action從以上配置可以看出,在<struts>標(biāo)簽中可以有多個(gè)<package>,名稱任意,但不要重名;extends屬性表示繼承一個(gè)默認(rèn)的配置文件"struts-default",一般都繼承于它,可以不用修改。<action>標(biāo)簽中的name屬性表示Action被提交時(shí)的路徑,class指定動(dòng)作類路徑測試*具體代碼測試效果圖見課本其他問題程序運(yùn)行流程 login.jsp中的表單提交到的地址為"/Prj14/login.action",被org.apache.struts2.dispatcher.FilterDispatcher截獲,框架把提交的地址的項(xiàng)目名稱和擴(kuò)展名".action"去掉,變?yōu)?/login",讀取配置文件其他問題在配置文件中,根據(jù)"/login",找到配置文件中的action對應(yīng)的類,從而得到要提交到的類LoginAction;在LoginAction中,實(shí)例化對象,將account和password封裝進(jìn)去其他問題框架調(diào)用LoginAction的execute方法,處理后返回一個(gè)字符串框架根據(jù)字符串內(nèi)容,在配置文件中找到相應(yīng)的頁面,并跳轉(zhuǎn)其他問題Action生命周期框架先實(shí)例化LoginAction對象,然后調(diào)用LoginAction的setAccount函數(shù),封裝表單數(shù)據(jù),然后調(diào)用execute函數(shù),進(jìn)行處理在第二次提交時(shí),LoginAction會(huì)重新實(shí)例化,說明每一個(gè)LoginAction對象都服務(wù)一個(gè)請求,這和Servlet的原理是不一樣的其他問題在Action中訪問Web對象獲得request對象的方法是:
importorg.apache.struts2.ServletActionContext; publicStringexecute()throwsException{
HttpServletRequestrequest=ServletActionContext.getRequest(); //使用request
}其他問題在Action中訪問Web對象獲得response對象的方法是:
importorg.apache.struts2.ServletActionContext; publicStringexecute()throwsException{ HttpServletResponseresponse=ServletActionContext.getResponse(); //使用response }
其他問題在Action中訪問Web對象獲得application對象的方法是: importorg.apache.struts2.ServletActionContext; publicStringexecute()throwsException{ ServletContextapplication=ServletActionContext.getServletContext(); //使用application}
其他問題在Action中訪問Web對象獲得session對象的方法是: importcom.opensymphony.xwork2.ActionContext; publicStringexecute()throwsException{ Mapsession=ActionContext.g
溫馨提示
- 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)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 提升辦學(xué)水平的高標(biāo)準(zhǔn)創(chuàng)新方案
- 保溫棉廠家采購合同范例
- 2025年度金融風(fēng)險(xiǎn)管理培訓(xùn)及認(rèn)證服務(wù)協(xié)議
- 東莞員工公寓租賃合同范例
- 前臺接待續(xù)簽合同范例
- 兩人合伙買裝載機(jī)合同范例
- 出租商鋪協(xié)議合同范例
- 勞務(wù)公司招工合同范本
- 2025年度海運(yùn)貨物跟蹤與運(yùn)輸合同示范
- 2025版茅臺酒出口業(yè)務(wù)代理及銷售合同模板4篇
- 新版《醫(yī)療器械經(jīng)營質(zhì)量管理規(guī)范》(2024)培訓(xùn)試題及答案
- 2025年人教版數(shù)學(xué)五年級下冊教學(xué)計(jì)劃(含進(jìn)度表)
- 北師大版七年級上冊數(shù)學(xué)期末考試試題及答案
- 初中信息技術(shù)課堂中的項(xiàng)目式學(xué)習(xí)實(shí)踐研究結(jié)題報(bào)告
- 2025年初級社會(huì)工作者綜合能力全國考試題庫(含答案)
- 復(fù)工復(fù)產(chǎn)安全培訓(xùn)考試題
- 上下樓梯安全我知道安全教育課件
- 市級臨床重點(diǎn)專科申報(bào)書
- 手術(shù)風(fēng)險(xiǎn)及醫(yī)療意外險(xiǎn)告知流程
- 《醫(yī)院重點(diǎn)??平ㄔO(shè)專項(xiàng)資金管理辦法》
評論
0/150
提交評論