




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第5章Struts2框架入門5.2Struts2概覽5.3Struts2基礎5.1MVC框架5.4值棧與OGNL表達式5.5Struts2的標簽庫5.1MVC框架5.1.2MVC設計模式5.1.3Struts2框架的MVC架構5.1.1Model
1與Model
2返回5.1.1Model
1與Model
2(1)Model1Model1是在早期廣泛使用的一個模型。在Model1體系中,所有的HTTP請求都被直接發(fā)送到JSP文件中,JSP文件獨自響應請求并將處理結果返回給用戶(所有的數(shù)據(jù)存取是由與JSP文件交互的Bean來實現(xiàn)的)。對于簡單的應用開發(fā)而言,使用Model1是一個不錯的選擇,但是它卻不能滿足復雜的大型應用程序的實現(xiàn)。這是因為在開發(fā)一個大型的應用程序時,使用Model1可能會導致JSP頁面內(nèi)被嵌入大量的腳本片段或Java代碼,特別是當需要處理的請求量很大時,情況更為嚴重。對于網(wǎng)頁設計人員和維護人員來說,這簡直就是災難,因為項目的開發(fā)和管理勢必會因此而變得越來越困難。
5.1.1Model
1與Model
2(2)Model2Model2和Model1有一些不同。在Model2體系中,采用JSP與Servlet結合的方式來實現(xiàn)對用戶請求的處理,使用Servlet充當控制器,使用JSP生成視圖界面。Servlet的任務是負責管理對請求進行處理,以及創(chuàng)建JSP頁面需要使用的Bean和對象,同時根據(jù)用戶的請求將相應的JSP頁面響應給客戶端。JSP頁面則是負責檢索原先由Servlet創(chuàng)建的對象或Bean,從Servlet中提取動態(tài)內(nèi)容插入靜態(tài)模板,它不負責處理業(yè)務邏輯。Model2的優(yōu)點就是它清晰地分離了表達和內(nèi)容,明確了角色的定義,以及開發(fā)者與網(wǎng)頁設計者的分工。返回5.1.2MVC設計模式MVC組成 VC英文為Model-View-Controller,即把一個應用的輸入、處理、輸出流程按照Model、View、Controller的方式進行分離,這樣一個應用被分成3個層:模型層、視圖層和控制層,從而可以使同一個應用程序使用不同的表現(xiàn)形式。原理
返回5.1.3Struts2框架的MVC架構(1)Struts2中的MVCMVC架構 Struts2框架是一個基于MVC架構的框架,它的MVC架構如下圖所示。
5.1.3Struts2框架的MVC架構(2)架構模式前端控制器模式
Struts2框架接收以“*.action”結束的請求,并對該請求進行處理。
頁面控制器模式頁面將直接請求指定的模型(Action),主要通過在JSP頁面中使用<s:action/>標簽來實現(xiàn)返回5.2Struts2概覽5.2.2Struts2的簡單應用5.2.1Struts2的工作流程返回5.2.1Struts2的工作流程工作流程
Struts2框架作為一個表示層的框架,主要用于處理應用程序與客戶端交互問題。Struts2框架的基本工作流程如下圖所示。返回5.2.2Struts2的簡單應用(1)使用Struts2框架開發(fā)一個簡單的Web應用程序
(1)創(chuàng)建一個Web應用工程,工程的目錄結構如下圖所示。5.2.2Struts2的簡單應用(2)(2)實現(xiàn)Action類publicclassHelloAction{ privateStringmessage; //用于封裝HTTP請求參數(shù)的屬性
publicStringgetMessage(){ returnmessage; } publicvoidsetMessage(Stringmessage){
this.message=message; } publicStringexecute(){ //處理用戶請求
if((this.message.equals(""))||(this.message==null)){ message="請輸入問候語"; } return"success"; }}5.2.2Struts2的簡單應用(3)(3)配置Action類 創(chuàng)建完Action類以后還需要將其在“struts.xml”文件中進行配置,它用于配置Action的實現(xiàn)類、邏輯視圖和物理視圖之間的映射關系<?xmlversion="1.0"encoding="GBK"?><!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN""/dtds/struts-2.0.dtd"><struts> <packagename="com"extends="struts-default"> <actionname="hello"class="com.struts2.hello.HelloAction"> <resultname="success">/hello.jsp</result> </action> </package></struts>5.2.2Struts2的簡單應用(4)(4)視圖頁面的實現(xiàn)
<%@pagelanguage="java"pageEncoding="gbk"%><%@taglibprefix="s"uri="/struts-tags"%><html> <head> <title>問候程序</title> </head> <body> <s:propertyvalue="message"/> <s:formaction="hello"> <s:textfieldname="message"label="問候語"value=""/> <br> <s:submitvalue="提交"/> </s:form> </body></html>5.2.2Struts2的簡單應用(5)(5)配置web.xml文件 在“web.xml”文件中配置Struts2的核心攔截器<filter> <filter-name>Struts2Filter</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class></filter><filter-mapping> <filter-name>Struts2Filter</filter-name> <url-pattern>/*</url-pattern></filter-mapping>返回5.3Struts2基礎5.3.2結果與視圖5.3.3struts.xml的配置5.3.1Action詳解
返回5.3.1Action詳解(1)在Struts2應用程序中,Action負責具體的業(yè)務邏輯處理,它是整個應用的核心所在。Action可以以多種形式存在:普通的Java類實現(xiàn)Action接口繼承ActionSupport1.普通的Java類無參數(shù)的execute()方法:用于處理用戶請求。私有屬性及其屬性的set、get方法:Action類中封裝HTTP請求參數(shù),因此私有屬性的名稱應和HTTP請求參數(shù)的名稱保持一致;程序通過屬性的set、get方法來處理請求參數(shù),所以必須提供屬性的set、get方法。5.3.1Action詳解(2)2.實現(xiàn)Action接口Struts2提供了一個名為“com.opensymphony.xwork2.Action”的接口,開發(fā)人員在創(chuàng)建Action類時可實現(xiàn)該接口,3.繼承ActionSupport類Struts2除了提供Action接口外,還提供了一個名為“com.opensymphony.xwork2.ActionSupport”的類,該類實現(xiàn)了Action接口、Validateable接口、ValidationAware接口、TextProvider接口和LocaleProvider接口并提供了用于處理輸入校驗、訪問國際化資源包等不同的方法。5.3.1Action詳解(3)在Action中訪問ServletAPI通過ActionContextActionContext
ctx=ActionContext.getContext(); //獲取一個ActionContext實例Mapsession=ctx.getSession(); //獲取SessionMapapplication=ctx.getApplication(); //獲取Application5.3.1Action詳解(4)通過實現(xiàn)*Aware()接口 publicclassTestimplementsSessionAware{ privateMapsession; privateUseruser; publicvoidsetSession(Mapsession){ //獲取Session
this.session=session; } publicStringexecute()throwsException{ if(user!=null){
session.put("user",user); return"success"; }else{ return"error"; } } } 返回5.3.2結果與視圖(1)在Struts2應用程序中,所有的Action類在處理完成之后返回的都是一個字符串類型的結果,這個結果作為一個邏輯視圖而存在。Struts2框架正是通過這個字符串,在“struts.xml”配置文件中將邏輯視圖與物理視圖建立起映射關系,而這一實現(xiàn)是由<result>元素來聲明的。<actionname="Action名稱"class="Action類路徑"method="方法名"> <resultname="邏輯視圖名稱"type="結果類型"> <paramname="參數(shù)名稱">參數(shù)值</param> </result></action>5.3.2結果與視圖(2)<result>元素包含兩個屬性name和type,其中name屬性指定了邏輯視圖名稱,type屬性指定了結果類型。常用的類型如下表所示:5.3.2結果與視圖(3)常用的結果類型:1.請求轉發(fā)(dispatcher)請求轉發(fā)只能將請求轉發(fā)至同一個Web應用。利用請求轉發(fā)瀏覽器的址欄不會發(fā)生變化。利用請求轉發(fā)調用者與被調用者之間共享相同的Request對象和Response對象,他們屬于同一個訪問的請求和響應。2.重定向(redirect) 重定向分為兩種情況:一種是生成一個全新的請求,另一種是重定向到另一個Action。重定向不僅可以指定到一個Web應用,還能夠指定到任何JSP資源。重定向的訪問結束后,瀏覽器的地址欄中顯示URL的變化。5.3.2結果與視圖(4)重定向的調用者與被調用者使用各自的Request對象和Response對象,他們屬于兩個獨立的訪問請求和響應過程。
對于重定向結果的類型,可以在<result>元素中設置兩個參數(shù):“l(fā)ocation”和“parse”。location:指定重定向的地址。parse:指定在location參數(shù)中是否使用OGNL表達式,它的默認值是“true”。通過過該參數(shù)的使用,系統(tǒng)會對結果配置信息中的OGNL表達式進行解析、運算,并用運算結果替換掉原有OGNL表達式。
重定向示例代碼:<actionname="hello"class="com.struts2.hello.HelloAction"> <resultname="success"type="redirect"> <paramname="location">/show.action?arg="${message}"</param> <paramname="parse">true</param> </result></action>5.3.2結果與視圖(5)3.Action鏈(chain) 當一個Action執(zhí)行完成后需要直接跳轉到另一個Action,此時就要用到Action鏈。通過Action鏈的使用,可以輕松實現(xiàn)兩個Action之間的數(shù)據(jù)共享。在Struts2中,Action鏈是通過一個叫做“chain”的攔截器實現(xiàn)的。返回5.3.3struts.xml的配置struts.xml文件是Struts2應用中的一個核心配置文件,它是程序整個運行流程的依據(jù),Struts2正是根據(jù)這個文件所配置的信息才知道處理什么程序、什么時候處理、如何進行處理等。返回5.4值棧與OGNL表達式(1)值棧值棧中存儲的對象主要包括以下4種類型:臨時對象(TemporaryObject):該對象是在程序執(zhí)行過程中,由容器自動創(chuàng)建并存儲到值棧中的。臨時對象的值并不固定,會隨著應用不同而發(fā)生變化。當應用結束時,該對象會被清空。比如當在頁面中利用Struts2標簽輸出迭代的值時,這些值都將以臨時對象的形式存放到值棧中。模型對象(ModelObject):該對象僅在Action使用模型驅動方式傳值的時候被用到。如果某個Action中應用了模型驅動(model-driven),當Action被請求時,“modeldriven”攔截器會自動從此Action中獲得模型對象,并將所獲得的對象放置在值棧中對應Action對象的上面。當JSP頁面需要用到這些對象所攜帶數(shù)據(jù)時,也會到值棧去找對應模型對象,獲取數(shù)值。Action對象(ActionObject):當每個Action請求到來的時候,容器都會先創(chuàng)建一個此Action的對象并存入值棧,該對象攜帶所有與Action執(zhí)行過程有關的信息。命名對象(NamedObjects):主要包括Servlet作用范圍內(nèi)相關的對象信息,比如Request、Session、Application等。5.4值棧與OGNL表達式(2)值棧中對象的存儲順序如圖所示OGNL表達式OGNL全稱是Object-GraphNavigationLanguage,意思是圖對象導航語言,它是表達式語言的一種。OGNL的功能非常強大,它通過簡單一致的語法,可以任意存取對象的屬性或者調用對象的方法,并能夠遍歷整個對象的結構圖,實現(xiàn)對象屬性字段的類型轉化.Struts2中的很多地方都要用到OGNL表達式,比如Struts2的標簽、Struts2的校驗文件等。1.使用OGNL訪問JavaBean在OGNL中使用“.”對導航圖進行遍歷,例如“randfather.father.child”這種形式5.4值棧與OGNL表達式(3)2.訪問應用上下文 OGNL通過“#”對應用上下文進行訪問。3.訪問集合元素5.4值棧與OGNL表達式(4)對Map的訪問:返回5.5Struts2的標簽庫5.5.2數(shù)據(jù)標簽5.5.3表單標簽5.5.1控制標簽返回5.5.4非表單UI標簽5.5.1控制標簽控制標簽主要用于控制輸出流程以及訪問值棧中的值。包括:if/elseif/else標簽:用于完成分支控制。 <!--定義一個名稱為score的屬性并賦值70--> <s:setname="score"value="70"></s:set> <s:iftest="#score>80">成績優(yōu)秀</s:if> <s:elseiftest="#score>60">成績及格</s:elseif> <s:else>成績不及格</s:else>iterator標簽:用于迭代輸出集合中的元素,包括List、Set和數(shù)組。 <s:iteratorid="season"value="{'春天','夏天','秋天','冬天'}"> <s:propertyvalue="season"/> </s:iterator>返回5.5.2數(shù)據(jù)標簽(1)數(shù)據(jù)標簽:用于對數(shù)據(jù)進行相關操作,例如將數(shù)據(jù)存入值?;蛘邚闹禇V腥〕鰯?shù)據(jù)。包括:bean標簽:用于創(chuàng)建一個JavaBean實例,在其標簽體中可以用<s:param>標簽對JavaBean實例的參數(shù)賦值。 <s:beanname="com.domain.Dog"id="dog"> <s:paramname="name"value="'大黃'"/> <s:paramname="age"value="5"/>
狗的名字:<s:propertyvalue="name"/>
狗的年齡:<s:propertyvalue="age"/> </s:bean> 在bean標
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 產(chǎn)后出血護理
- 蘇黃止咳膠囊臨床病例應用分析
- 大班運動與安全
- 文明旅游教育
- 旅游線路規(guī)劃設計要點
- 學前教育宣傳月活動總結
- 2025年電動晾衣機項目規(guī)劃申請報告
- 2025年廣東江門市江海區(qū)保安服務有限公司招聘考試筆試試題(含答案)
- 2025年郴州市公安局招聘特殊崗位警務輔助人員考試筆試試題(含答案)
- 2025年安徽皖信人力資源管理有限公司宣州分公司工作人員考試筆試試題(含答案)
- 財產(chǎn)贈與公證協(xié)議書模板
- 項目聯(lián)合體協(xié)議書范本
- 2024年三級直播銷售員(高級)職業(yè)技能鑒定考試復習題庫(含答案)
- 《大學生創(chuàng)新創(chuàng)業(yè)基礎》全套教學課件
- 2024屆浙江省杭州市西湖區(qū)小升初考試數(shù)學試卷含解析
- 醫(yī)療設備監(jiān)督檢查記錄表
- 渣土清運綜合項目施工組織設計
- 云南省昆明市盤龍區(qū)2023-2024學年七年級下學期3月月考語文卷(附答案)
- 《隱患排查》課件
- 傳感器與機器視覺 課件 第六章 機器視覺
- 環(huán)境溫度、相對濕度、露點對照表
評論
0/150
提交評論