版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第14章MVC和Struts2基本原理本課教學(xué)內(nèi)容MVC模式Struts2簡介Struts2的基本原理Struts2的基本使用方法其他問題MVC和Strut2s基本原理MVC模式 MVC(Model、View、Controller),是軟件開發(fā)過程中比較流行的設(shè)計思想。在了解MVC之前,首先要明確一點,MVC是一種設(shè)計模式(設(shè)計思想),不是一種編程技術(shù)MVC模式MVC思想:
編寫JSP,負責(zé)輸入查詢代碼,提交到Servlet,Servlet進行安全驗證,調(diào)用Dao來訪問數(shù)據(jù)庫,得到結(jié)果,跳轉(zhuǎn)到JSP顯示MVC思想MVC思想如圖MVC思想工作步驟為:用戶在表單中輸入,表單提交給Servlet,Servlet驗證輸入,然后實例化JavaBeanJavaBean查詢數(shù)據(jù)庫,查詢結(jié)果暫存在JavaBean中Servlet跳轉(zhuǎn)到JSP,JSP使用JavaBean,得到它里面的查詢結(jié)果,并顯示出來Struts2簡介因為要對MVC模式來進行標(biāo)準(zhǔn)化,讓程序員在某個標(biāo)準(zhǔn)下進行開發(fā)。很多人致力于這個工作,并且發(fā)布了一些框架,Struts就是這樣一個框架,在使用的過程中,受到了廣泛的承認。可以說,Struts是為了規(guī)范MVC開發(fā)而發(fā)布的一個框架。大多數(shù)框架的版本改進,一般是在原有的基礎(chǔ)上增加功能或者進行優(yōu)化,而Struts2不單如此。Struts2簡介Struts2是Struts的下一代框架,并不是新發(fā)布的新框架,但是它是另一個非常流行的框架:WebWork基礎(chǔ)上發(fā)展起來的??梢哉f,Struts2和WebWork非常類似。并且Struts2吸收了Struts1和WebWork兩者的優(yōu)勢,因此也是一個非常優(yōu)秀的框架Struts2簡介Struts2和Struts1具有一些不同點,主要集中在以下方面:1. Action類的編寫:在Struts1中,Action類一般繼承基類org.apache.struts.action.Action。而在Struts2中,Action類可以實現(xiàn)一個Action接口,也可實現(xiàn)其他接口,也可以繼承ActionSupport基類,甚至不需要實現(xiàn)任何接口,只編寫execute函數(shù)即可Struts2簡介2.Action的運行模式:Struts1中,Action是單態(tài)的,系統(tǒng)實例化一個對象來處理多個請求,為每個請求分配一個線程,在該線程中運行execute函數(shù)。因此,在開發(fā)時需要特別小心,Action資源必須是線程安全的或同步的。但是,Struts2中,Action為每一個請求產(chǎn)生一個實例,不會產(chǎn)生線程安全問題。但是,系統(tǒng)又能夠及時回收垃圾資源,不會有廢棄空間的問題Struts2簡介3.
對Web容器的依賴:Struts1中,Action的execute函數(shù)內(nèi),傳入了ServletAPI:HttpServletRequest和HttpServletResponse,使得測試必須依賴于Web容器。但是,在Struts2中,可以不傳入HttpServletRequest和HttpServletResponse,但是也可以訪問它們,因此,Action不依賴于容器,允許Action脫離容器單獨被測試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、配置文件等。對于一個動作,其執(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)頁地址,進行跳轉(zhuǎn),結(jié)果在JSP上顯示Struts2的基本使用方法
該部分內(nèi)容使用實際案例進行講解。在學(xué)生管理系統(tǒng)中,用戶輸入賬號密碼進行登錄,如果登錄成功,就跳轉(zhuǎn)到成功頁面,否則跳轉(zhuǎn)到失敗頁面。為了簡便起
見,認為賬號密碼相等就登錄成功。Struts2的基本使用方法導(dǎo)入Struts2
將右邊幾個包拷貝到項目中WEB-INF中的lib目錄下:然后配置web.xml文件編寫JSP*具體代碼示例詳見課本編寫并配置ActionForm在Struts1.x中,必須要單獨建立一個ActionForm類,而在Struts2中ActionForm和Action已經(jīng)合二為一了。因此,只需要將和表單元素同名的屬性編寫到Action內(nèi)。編寫并配置ActionFormLoginAction沒有繼承任何類,它有屬性account和password,與login.jsp中的表單元素account與password必須同名編寫并配置ActionStruts2中,既然Action和ActionForm合二為一,Action是負責(zé)業(yè)務(wù)邏輯的,所以必須編寫業(yè)務(wù)邏輯代碼。下面來加強Action的功能。要能夠處理業(yè)務(wù)邏輯,必須要滿足一個規(guī)范,那就是:編寫execute方法來處理業(yè)務(wù)邏輯。注意,不是重寫,是編寫。并且該方法不需要有任何的參數(shù)編寫并配置Action編寫execute方法,是因為Action接收數(shù)據(jù)后,由框架自動調(diào)用它的execute方法,該方法的運行,在底層通過反射機制進行。execute的格式為:
publicStringexecute(){}該函數(shù)返回一個字符串,表示的是目標(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)簽中可以有多個<package>,名稱任意,但不要重名;extends屬性表示繼承一個默認的配置文件"struts-default",一般都繼承于它,可以不用修改。<action>標(biāo)簽中的name屬性表示Action被提交時的路徑,class指定動作類路徑測試*具體代碼測試效果圖見課本其他問題程序運行流程 login.jsp中的表單提交到的地址為"/Prj14/login.action",被org.apache.struts2.dispatcher.FilterDispatcher截獲,框架把提交的地址的項目名稱和擴展名".action"去掉,變?yōu)?/login",讀取配置文件其他問題在配置文件中,根據(jù)"/login",找到配置文件中的action對應(yīng)的類,從而得到要提交到的類LoginAction;在LoginAction中,實例化對象,將account和password封裝進去其他問題框架調(diào)用LoginAction的execute方法,處理后返回一個字符串框架根據(jù)字符串內(nèi)容,在配置文件中找到相應(yīng)的頁面,并跳轉(zhuǎn)其他問題Action生命周期框架先實例化LoginAction對象,然后調(diào)用LoginAction的setAccount函數(shù),封裝表單數(shù)據(jù),然后調(diào)用execute函數(shù),進行處理在第二次提交時,LoginAction會重新實例化,說明每一個LoginAction對象都服務(wù)一個請求,這和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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年石油石化職業(yè)技能鑒定考試題庫附答案詳解(A卷)
- 第3課 環(huán)境數(shù)據(jù)要感知 課件 2025-2026學(xué)年人教版初中信息科技八年級全一冊
- 2026年陽光學(xué)院單招綜合素質(zhì)考試題庫附答案
- 2026年金融行業(yè)中的6S管理規(guī)范及考核要點
- 2026年法律常識與法律實務(wù)應(yīng)用題集
- 2026年文學(xué)鑒賞能力中外名著內(nèi)容分析題庫
- 2026年交通安全知識題庫遵守交通規(guī)則保障出行安全
- 2026年電子商務(wù)運營與管理實戰(zhàn)技巧題庫
- 2026年新能源開發(fā)與利用技術(shù)論文題目集
- 2026年經(jīng)濟學(xué)基礎(chǔ)初級教程與習(xí)題
- 變壓器轉(zhuǎn)讓協(xié)議書范本的樣本
- 中考英語688高頻詞大綱詞頻表
- HG∕T 4198-2011 甲醇合成催化劑化學(xué)成分分析方法
- CJT511-2017 鑄鐵檢查井蓋
- 2024年高考語文考前專題訓(xùn)練:現(xiàn)代文閱讀Ⅱ(散文)(解析版)
- 湖南省張家界市永定區(qū)2023-2024學(xué)年七年級上學(xué)期期末考試數(shù)學(xué)試題
- 中醫(yī)外科乳房疾病診療規(guī)范診療指南2023版
- 2023-2024學(xué)年江西省贛州市章貢區(qū)文清實驗學(xué)校數(shù)學(xué)六年級第一學(xué)期期末經(jīng)典模擬試題含答案
- DB36-T 1158-2019 風(fēng)化殼離子吸附型稀土礦產(chǎn)地質(zhì)勘查規(guī)范
- 城市道路照明路燈工程施工組織方案資料
- 雷達液位計參考課件
評論
0/150
提交評論