




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
-1-掌握Struts2的框架結構了解核心控制器StrutsPrepareAndExecuteFilter了解業務控制器Action了解Struts2支持的視圖組件掌握Struts2工作流程掌握Struts2相關文件配置目標-2-Struts2框架概述Struts2是以WebWork的設計思想為核心,吸收Struts1的部分優點后建立的一個兼容WebWork和Struts1的MVC框架保留了Struts1的簡單易用性,并且充分利用了WebWork的攔截器機制(AOP思想),是一個具有高度可擴展性的框架Struts2框架誕生后,取代了原有的Struts和WebWork框架。在短時間內迅速成為MVC領域最流行的框架Struts2的目標是使Web開發變得更加容易
-3-Struts2框架結構Struts2中大量使用攔截器來處理用戶請求允許用戶的業務邏輯控制器與ServletAPI分離-4-Struts2控制器組件-StrutsPrepareAndExecuteFilterStrutsPrepareAndExecuteFilter是一個Servlet過濾器是Struts2的核心組件web.xml中配置StrutsPrepareAndExecuteFilter代碼:Struts2的控制器由兩部分組成:StrutsPrepareAndExecuteFilter和業務控制器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是業務控制器Struts2中的Action類有如下優勢:Action類完全是一個POJO,具有良好的代碼重用性Action類無需與ServletAPI耦合,因此無論是應用還是測試都非常簡單Action類的execute()方法僅返回一個字符串作為處理結果,該處理結果可映射到任何的視圖或另一個ActionpublicStringexecute(){
}-6-Struts2配置文件–struts.xmlStruts.xml主要用來配置ActionStruts2的配置文件有兩種:配置Action的struts.xml文件配置Struts2全局屬性的perties文件<struts><!--指定Struts2處于開發階段,可以進行調試--><constantname="struts.devMode"value="true"/><!--Struts2的Action都必須配置在package里--><packagename="p1"extends="struts-default"namespace="/admin"> <!--定義一個login的Action,實現類為com.dh.action.LoginAction--> <actionname="login"class="com.dh.action.LoginAction"> <!--配置execute()方法返回值所對應的頁面--> <resultname="error">/error.jsp</result> <!--如果result標簽不配置name屬性,其默認為success--> <result>/success.jsp</result> </action></package></struts>-7-Struts2配置文件–pertiesSperties主要用來配置全局屬性#指定web應用的默認的編碼集,#相當于調用HttpServletRequest的setCharacterEncoding方法struts.i18n.encoding=GBK#當struts.xml修改后是否重新加載該文件,在開發階段最好打開struts.configuration.xml.reload=true#設置瀏覽器是否緩存靜態內容,開發階段最好關閉struts.serve.static.browserCache=false-8-Struts2標簽庫Struts2的標簽庫也是Struts2框架的重要組成部分,提供了非常豐富的功能,這些標簽不僅提供了表現層數據處理,而且提供了基本的流程控制功能,還提供了國際化、Ajax支持等功能。通過使用Struts2的標簽,開發者可以最大限度的減少頁面代碼的編寫。-9-Struts2處理步驟客戶端瀏覽器發送一個請求,例如:/mypage.action。這個請求經過核心控制器StrutsPrepareAndExecuteFilter過濾處理,StrutsPrepareAndExecuteFilter將請求轉交給相應的Action代理。Action代理通過配置文件中的信息找到對應的Action類,創建Action對象并調用其execute()方法。在調用Action的過程前后,涉及到相關攔截器的調用。攔截器鏈自動對請求應用通用功能,例如自動化工作流、驗證或文件上傳等功能。一旦Action執行完畢,Action代理根據struts.xml中的配置信息找到execute()方法返回值對應的結果。返回結果通常是視圖資源(如JSP頁面)或另一個Action。-10-基于Struts2的加法器在Struts2框架下開發加法器的具體步驟如下:配置Struts2應用環境。創建add.jsp頁面,接收用戶輸入數據。創建業務邏輯類Calculator,實現數據的算術運算。創建AddAction類,實現execute()方法。在struts.xml中配置AddAction。創建add_result.jsp頁面,顯示計算結果。-11-添加類庫-12-修改web.xml<filter> <!--配置Struts2框架的核心Filter--> <filter-name>struts2</filter-name> <!--配置Struts2核心Filter的實現類--> <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>-13-創建輸入頁面add.jsp……<formid="calcForm"method="post"action="add.action"><table> <tbody> <tr> <td>第一個數</td> <td><inputtype="text"name="num1"/></td> </tr> <tr> <td>第二個數</td>
<td><inputtype="text"name="num2"/></td> </tr> <tr> <td><inputtype="submit"value="加"/></td> </tr> </tbody></table></form>……-14-實現業務邏輯類CalculatorpublicclassCalculator{ publicdoubleadd(doublea,doubleb){ returna+b; } publicdoublesubtract(doublea,doubleb){ returna-b; } publicdoublemultiply(doublea,doubleb){ returna*b; } publicdoubledivide(doublea,doubleb){ //未判斷除數不能為零
returna/b; }}-15-創建業務控制器AddActionpublicclassAddAction{ privatedoublenum1; privatedoublenum2;
num1、num2的get、set方法
/** *調用業務邏輯方法,實現業務,控制流程轉向 */ publicStringexecute(){ //新建業務邏輯對象
Calculatorbiz=newCalculator(); //調用業務邏輯方法,獲得返回值
doubleresult=biz.add(num1,num2); //將計算結果存入Session中
ActionContext.getContext().getSession().put("result",result); return"cal"; }}Struts2的Action可以通過ActionContext來訪問ServletAPI
-16-在struts.xml中配置業務控制器AddAction<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEstrutsPUBLIC "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN" "/dtds/struts-2.0.dtd"><struts> <!--指定Struts2處于開發階段,可以進行調試--> <constantname="struts.devMode"value="true"/> <!--Struts2的Action都必須配置在package里--> <packagename="p2"extends="struts-default"> <!--定義一個add的Action,實現類為AddAction--> <actionname="add" class="com.dh.ch02.action.AddAction"> <!--配置execute()方法返回值所對應的頁面--> <resultname="cal">/add_result.jsp</result> </action> </package></struts>-17-創建顯示結果頁面result.jsp……<table> <tbody> <tr> <td>第一個數</td> <td>${param.num1}</td> </tr> <tr> <td>第二個數</td> <td>${param.num2}</td> </tr> <tr> <td>結果</td> <td>${sessionScope.result}</td> </tr> </tbody></table>……結果值是從session中提取的,而非request中
-18-Struts2與自定義框架的比較基于Struts2的加法器在原理上與自定義框架的加法器是一樣的。相比自定義框架的加法器實現,基于Struts2的加法器在代碼上簡化了許多;而且當增加一個Action時,只需在Struts2的配置文件中進行簡單配置即可,無需使用大量代碼進行控制實現。另外Struts2框架還提供了許多功能,例如:異常處理、Struts2標簽庫等,這些功使Struts2開發更加輕松和完善。-19-Struts2在Struts1基礎上發展起來的,但實質上以WebWork為核心所有MVC框架都以控制器為核心,其中Struts2控制器由StrutsPre
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年元宇宙社交平臺用戶需求預測與發展瓶頸分析報告
- 2025年醫院信息化建設電子病歷系統優化與醫療信息化應用場景研究報告
- 藝術品數字化交易平臺投資價值與風險評估報告
- 2025年醫院信息化建設電子病歷系統功能優化深度分析報告
- 2025年醫院電子病歷系統在醫院信息化建設中的數據挖掘技術應用報告
- 2025年汽車輕量化材料在汽車輕量化車身制造工藝中的應用趨勢報告
- 2025年Z世代消費行為分析:新消費品牌產品創新與品牌定位報告
- 農村金融服務創新與綠色金融:2025年可持續發展報告
- 文化與科技融合在數字藝術展覽中的創新應用與發展趨勢報告
- 爆破員考試題及答案
- 讀書分享交流會《從一到無窮大》課件
- 漢字的發展(英文版介紹)Chinese-character
- 土地利用現狀分類代碼表
- 華為“1+X”職業技能等級(網絡系統建設與運維)中級考試題庫(含答案)
- (完整版)生產車間地面畫線標準
- 單位財務內控制度
- 有機硅化合物的基本性質
- “阿里巴巴”并購“餓了么”案例分析
- 口腔完整病歷范文(合集27篇)
- 山東省病原微生物實驗室及實驗活動備案管理系統
- 小學道德與法治-被動物咬傷怎么辦教學設計學情分析教材分析課后反思
評論
0/150
提交評論