《輕量級(jí)Java EE程序設(shè)計(jì)及實(shí)踐》課件第2章 Struts2基礎(chǔ)_第1頁(yè)
《輕量級(jí)Java EE程序設(shè)計(jì)及實(shí)踐》課件第2章 Struts2基礎(chǔ)_第2頁(yè)
《輕量級(jí)Java EE程序設(shè)計(jì)及實(shí)踐》課件第2章 Struts2基礎(chǔ)_第3頁(yè)
《輕量級(jí)Java EE程序設(shè)計(jì)及實(shí)踐》課件第2章 Struts2基礎(chǔ)_第4頁(yè)
《輕量級(jí)Java EE程序設(shè)計(jì)及實(shí)踐》課件第2章 Struts2基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

-1-掌握Struts2的框架結(jié)構(gòu)了解核心控制器StrutsPrepareAndExecuteFilter了解業(yè)務(wù)控制器Action了解Struts2支持的視圖組件掌握Struts2工作流程掌握Struts2相關(guān)文件配置目標(biāo)-2-Struts2框架概述Struts2是以WebWork的設(shè)計(jì)思想為核心,吸收Struts1的部分優(yōu)點(diǎn)后建立的一個(gè)兼容WebWork和Struts1的MVC框架保留了Struts1的簡(jiǎn)單易用性,并且充分利用了WebWork的攔截器機(jī)制(AOP思想),是一個(gè)具有高度可擴(kuò)展性的框架Struts2框架誕生后,取代了原有的Struts和WebWork框架。在短時(shí)間內(nèi)迅速成為MVC領(lǐng)域最流行的框架Struts2的目標(biāo)是使Web開(kāi)發(fā)變得更加容易

-3-Struts2框架結(jié)構(gòu)Struts2中大量使用攔截器來(lái)處理用戶(hù)請(qǐng)求允許用戶(hù)的業(yè)務(wù)邏輯控制器與ServletAPI分離-4-Struts2控制器組件-StrutsPrepareAndExecuteFilterStrutsPrepareAndExecuteFilter是一個(gè)Servlet過(guò)濾器是Struts2的核心組件web.xml中配置StrutsPrepareAndExecuteFilter代碼:Struts2的控制器由兩部分組成:StrutsPrepareAndExecuteFilter和業(yè)務(wù)控制器Action

<filter> <filter-name>struts2</filter-name> <filter-class>

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class></filter><filter-mapping> <filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern></filter-mapping>-5-Struts2控制器組件-ActionAction是業(yè)務(wù)控制器Struts2中的Action類(lèi)有如下優(yōu)勢(shì):Action類(lèi)完全是一個(gè)POJO,具有良好的代碼重用性Action類(lèi)無(wú)需與ServletAPI耦合,因此無(wú)論是應(yīng)用還是測(cè)試都非常簡(jiǎn)單Action類(lèi)的execute()方法僅返回一個(gè)字符串作為處理結(jié)果,該處理結(jié)果可映射到任何的視圖或另一個(gè)ActionpublicStringexecute(){

}-6-Struts2配置文件–struts.xmlStruts.xml主要用來(lái)配置ActionStruts2的配置文件有兩種:配置Action的struts.xml文件配置Struts2全局屬性的perties文件<struts><!--指定Struts2處于開(kāi)發(fā)階段,可以進(jìn)行調(diào)試--><constantname="struts.devMode"value="true"/><!--Struts2的Action都必須配置在package里--><packagename="p1"extends="struts-default"namespace="/admin"> <!--定義一個(gè)login的Action,實(shí)現(xiàn)類(lèi)為com.dh.action.LoginAction--> <actionname="login"class="com.dh.action.LoginAction"> <!--配置execute()方法返回值所對(duì)應(yīng)的頁(yè)面--> <resultname="error">/error.jsp</result> <!--如果result標(biāo)簽不配置name屬性,其默認(rèn)為success--> <result>/success.jsp</result> </action></package></struts>-7-Struts2配置文件–pertiesSperties主要用來(lái)配置全局屬性#指定web應(yīng)用的默認(rèn)的編碼集,#相當(dāng)于調(diào)用HttpServletRequest的setCharacterEncoding方法struts.i18n.encoding=GBK#當(dāng)struts.xml修改后是否重新加載該文件,在開(kāi)發(fā)階段最好打開(kāi)struts.configuration.xml.reload=true#設(shè)置瀏覽器是否緩存靜態(tài)內(nèi)容,開(kāi)發(fā)階段最好關(guān)閉struts.serve.static.browserCache=false-8-Struts2標(biāo)簽庫(kù)Struts2的標(biāo)簽庫(kù)也是Struts2框架的重要組成部分,提供了非常豐富的功能,這些標(biāo)簽不僅提供了表現(xiàn)層數(shù)據(jù)處理,而且提供了基本的流程控制功能,還提供了國(guó)際化、Ajax支持等功能。通過(guò)使用Struts2的標(biāo)簽,開(kāi)發(fā)者可以最大限度的減少頁(yè)面代碼的編寫(xiě)。-9-Struts2處理步驟客戶(hù)端瀏覽器發(fā)送一個(gè)請(qǐng)求,例如:/mypage.action。這個(gè)請(qǐng)求經(jīng)過(guò)核心控制器StrutsPrepareAndExecuteFilter過(guò)濾處理,StrutsPrepareAndExecuteFilter將請(qǐng)求轉(zhuǎn)交給相應(yīng)的Action代理。Action代理通過(guò)配置文件中的信息找到對(duì)應(yīng)的Action類(lèi),創(chuàng)建Action對(duì)象并調(diào)用其execute()方法。在調(diào)用Action的過(guò)程前后,涉及到相關(guān)攔截器的調(diào)用。攔截器鏈自動(dòng)對(duì)請(qǐng)求應(yīng)用通用功能,例如自動(dòng)化工作流、驗(yàn)證或文件上傳等功能。一旦Action執(zhí)行完畢,Action代理根據(jù)struts.xml中的配置信息找到execute()方法返回值對(duì)應(yīng)的結(jié)果。返回結(jié)果通常是視圖資源(如JSP頁(yè)面)或另一個(gè)Action。-10-基于Struts2的加法器在Struts2框架下開(kāi)發(fā)加法器的具體步驟如下:配置Struts2應(yīng)用環(huán)境。創(chuàng)建add.jsp頁(yè)面,接收用戶(hù)輸入數(shù)據(jù)。創(chuàng)建業(yè)務(wù)邏輯類(lèi)Calculator,實(shí)現(xiàn)數(shù)據(jù)的算術(shù)運(yùn)算。創(chuàng)建AddAction類(lèi),實(shí)現(xiàn)execute()方法。在struts.xml中配置AddAction。創(chuàng)建add_result.jsp頁(yè)面,顯示計(jì)算結(jié)果。-11-添加類(lèi)庫(kù)-12-修改web.xml<filter> <!--配置Struts2框架的核心Filter--> <filter-name>struts2</filter-name> <!--配置Struts2核心Filter的實(shí)現(xiàn)類(lèi)--> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class></filter><filter-mapping> <filter-name>struts2</filter-name> <!--匹配所有請(qǐng)求--> <url-pattern>/*</url-pattern></filter-mapping>-13-創(chuàng)建輸入頁(yè)面add.jsp……<formid="calcForm"method="post"action="add.action"><table> <tbody> <tr> <td>第一個(gè)數(shù)</td> <td><inputtype="text"name="num1"/></td> </tr> <tr> <td>第二個(gè)數(shù)</td>

<td><inputtype="text"name="num2"/></td> </tr> <tr> <td><inputtype="submit"value="加"/></td> </tr> </tbody></table></form>……-14-實(shí)現(xiàn)業(yè)務(wù)邏輯類(lèi)CalculatorpublicclassCalculator{ publicdoubleadd(doublea,doubleb){ returna+b; } publicdoublesubtract(doublea,doubleb){ returna-b; } publicdoublemultiply(doublea,doubleb){ returna*b; } publicdoubledivide(doublea,doubleb){ //未判斷除數(shù)不能為零

returna/b; }}-15-創(chuàng)建業(yè)務(wù)控制器AddActionpublicclassAddAction{ privatedoublenum1; privatedoublenum2;

num1、num2的get、set方法

/** *調(diào)用業(yè)務(wù)邏輯方法,實(shí)現(xiàn)業(yè)務(wù),控制流程轉(zhuǎn)向 */ publicStringexecute(){ //新建業(yè)務(wù)邏輯對(duì)象

Calculatorbiz=newCalculator(); //調(diào)用業(yè)務(wù)邏輯方法,獲得返回值

doubleresult=biz.add(num1,num2); //將計(jì)算結(jié)果存入Session中

ActionContext.getContext().getSession().put("result",result); return"cal"; }}Struts2的Action可以通過(guò)ActionContext來(lái)訪(fǎng)問(wèn)ServletAPI

-16-在struts.xml中配置業(yè)務(wù)控制器AddAction<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEstrutsPUBLIC "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN" "/dtds/struts-2.0.dtd"><struts> <!--指定Struts2處于開(kāi)發(fā)階段,可以進(jìn)行調(diào)試--> <constantname="struts.devMode"value="true"/> <!--Struts2的Action都必須配置在package里--> <packagename="p2"extends="struts-default"> <!--定義一個(gè)add的Action,實(shí)現(xiàn)類(lèi)為AddAction--> <actionname="add" class="com.dh.ch02.action.AddAction"> <!--配置execute()方法返回值所對(duì)應(yīng)的頁(yè)面--> <resultname="cal">/add_result.jsp</result> </action> </package></struts>-17-創(chuàng)建顯示結(jié)果頁(yè)面result.jsp……<table> <tbody> <tr> <td>第一個(gè)數(shù)</td> <td>${param.num1}</td> </tr> <tr> <td>第二個(gè)數(shù)</td> <td>${param.num2}</td> </tr> <tr> <td>結(jié)果</td> <td>${sessionScope.result}</td> </tr> </tbody></table>……結(jié)果值是從session中提取的,而非request中

-18-Struts2與自定義框架的比較基于Struts2的加法器在原理上與自定義框架的加法器是一樣的。相比自定義框架的加法器實(shí)現(xiàn),基于Struts2的加法器在代碼上簡(jiǎn)化了許多;而且當(dāng)增加一個(gè)Action時(shí),只需在Struts2的配置文件中進(jìn)行簡(jiǎn)單配置即可,無(wú)需使用大量代碼進(jìn)行控制實(shí)現(xiàn)。另外Struts2框架還提供了許多功能,例如:異常處理、Struts2標(biāo)簽庫(kù)等,這些功使Struts2開(kāi)發(fā)更加輕松和完善。-19-Struts2在Struts1基礎(chǔ)上發(fā)展起來(lái)的,但實(shí)質(zhì)上以WebWork為核心所有MVC框架都以控制器為核心,其中Struts2控制器由StrutsPre

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論