




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、SHH實(shí)戰(zhàn)系列教程Struts實(shí)戰(zhàn)教程課件編寫人:徐橋 TOC o 1-3 h z u HYPERLINK l _Toc227029248 第一天 PAGEREF _Toc227029248 h 2 HYPERLINK l _Toc227029249 Struts 2的介紹 PAGEREF _Toc227029249 h 3 HYPERLINK l _Toc227029250 Str簡(jiǎn)介: PAGEREF _Toc227029250 h 3 HYPERLINK l _Toc227029251 框架的優(yōu)勢(shì) PAGEREF _Toc227029251 h 4 HYPERLINK l _Toc227
2、029252 目錄下文件簡(jiǎn)介 PAGEREF _Toc227029252 h 4 HYPERLINK l _Toc227029253 Struts 2開發(fā)環(huán)境的搭建 PAGEREF _Toc227029253 h 4 HYPERLINK l _Toc227029254 使用到的jar文件 PAGEREF _Toc227029254 h 4 HYPERLINK l _Toc227029255 版本開發(fā)環(huán)境要求 PAGEREF _Toc227029255 h 6 HYPERLINK l _Toc227029256 Struts2的啟動(dòng)配置(在中配置) PAGEREF _Toc227029256 h
3、 6 HYPERLINK l _Toc227029257 Struts2的配置文件模版 PAGEREF _Toc227029257 h 6 HYPERLINK l _Toc227029258 第一個(gè)Struts2應(yīng)用 PAGEREF _Toc227029258 h 7 HYPERLINK l _Toc227029259 第一步:新建一個(gè)J2的web project工程 PAGEREF _Toc227029259 h 7 HYPERLINK l _Toc227029260 第二步:在src目錄下創(chuàng)建一個(gè)文件 PAGEREF _Toc227029260 h 7 HYPERLINK l _Toc22
4、7029261 第三步:新建一個(gè)java類 PAGEREF _Toc227029261 h 9 HYPERLINK l _Toc227029262 第四步:導(dǎo)入jar包 PAGEREF _Toc227029262 h 9 HYPERLINK l _Toc227029263 第五步:配置文件(struts2 啟動(dòng)配置) PAGEREF _Toc227029263 h 10 HYPERLINK l _Toc227029264 第六步:建立顯示頁(yè)面 PAGEREF _Toc227029264 h 10 HYPERLINK l _Toc227029265 第七步:在IE瀏覽上測(cè)試程序結(jié)果: PAGER
5、EF _Toc227029265 h 10 HYPERLINK l _Toc227029266 解決在MyEclipse下Struts2配置文件無(wú)提示問(wèn)題 PAGEREF _Toc227029266 h 11 HYPERLINK l _Toc227029267 Action名稱的搜索順序 PAGEREF _Toc227029267 h 14 HYPERLINK l _Toc227029268 給Action配置的各項(xiàng)默認(rèn)值 PAGEREF _Toc227029268 h 16 HYPERLINK l _Toc227029269 Action中result的各種轉(zhuǎn)發(fā)類型 PAGEREF _Toc
6、227029269 h 19 HYPERLINK l _Toc227029270 dispatcher(運(yùn)用服務(wù)器跳轉(zhuǎn),默認(rèn)值) PAGEREF _Toc227029270 h 21 HYPERLINK l _Toc227029271 redirect(重定向) PAGEREF _Toc227029271 h 21 HYPERLINK l _Toc227029272 Chain(鏈條) PAGEREF _Toc227029272 h 21 HYPERLINK l _Toc227029273 redirectAction(客戶端跳轉(zhuǎn)) PAGEREF _Toc227029273 h 22 HYP
7、ERLINK l _Toc227029274 Stream PAGEREF _Toc227029274 h 22 HYPERLINK l _Toc227029275 plaintext(顯示原始文件內(nèi)容) PAGEREF _Toc227029275 h 22 HYPERLINK l _Toc227029276 Freemarker PAGEREF _Toc227029276 h 22 HYPERLINK l _Toc227029277 header PAGEREF _Toc227029277 h 22 HYPERLINK l _Toc227029278 Velocity PAGEREF _To
8、c227029278 h 22 HYPERLINK l _Toc227029279 Xslt PAGEREF _Toc227029279 h 23 HYPERLINK l _Toc227029280 Tiles PAGEREF _Toc227029280 h 23 HYPERLINK l _Toc227029281 為Action屬性注入值 PAGEREF _Toc227029281 h 23 HYPERLINK l _Toc227029282 第一步: PAGEREF _Toc227029282 h 23 HYPERLINK l _Toc227029283 第二步: PAGEREF _Toc
9、227029283 h 23 HYPERLINK l _Toc227029284 第三步: PAGEREF _Toc227029284 h 23 HYPERLINK l _Toc227029285 第四步配置好 PAGEREF _Toc227029285 h 24 HYPERLINK l _Toc227029286 第五步: PAGEREF _Toc227029286 h 24 HYPERLINK l _Toc227029287 第六步: PAGEREF _Toc227029287 h 25 HYPERLINK l _Toc227029288 指定Struts2處理的請(qǐng)求后綴 PAGEREF
10、_Toc227029288 h 25 HYPERLINK l _Toc227029289 在文件中配置常量 PAGEREF _Toc227029289 h 26 HYPERLINK l _Toc227029290 在中配置常量 PAGEREF _Toc227029290 h 26 HYPERLINK l _Toc227029291 常量可以在多個(gè)配置文件中定義及這文件的加載順序 PAGEREF _Toc227029291 h 26 HYPERLINK l _Toc227029292 常用的常量介紹: PAGEREF _Toc227029292 h 27 HYPERLINK l _Toc2270
11、29293 Struts2的處理流程 PAGEREF _Toc227029293 h 28 HYPERLINK l _Toc227029294 Struts2是一基于MVC模式的框架: PAGEREF _Toc227029294 h 28 HYPERLINK l _Toc227029295 的工作原理圖 PAGEREF _Toc227029295 h 29 HYPERLINK l _Toc227029296 的工作原理圖 PAGEREF _Toc227029296 h 29第一天內(nèi)容介紹:Struts 2開發(fā)環(huán)境的搭建第一個(gè)struts2應(yīng)用開發(fā)解決struts2配置文件無(wú)提示問(wèn)題Action
12、名稱的搜索順序Action配置的各項(xiàng)默認(rèn)值.result配置的各種視圖轉(zhuǎn)發(fā)類型.為Action屬性注入值指定Struts2處理的請(qǐng)求后綴Struts2的處理流程與Action的管理方式期望的目標(biāo)了解Struts 2的優(yōu)勢(shì)熟練配置Struts 2環(huán)境并且開發(fā)出Struts 2框架的第一環(huán)境了解Action在Struts 2作用及原理理解Struts 2的類型轉(zhuǎn)換原理了解Action屬性的注入值理解并且滲透Struts2的處理流程與Action的管理方式第一代:靜態(tài)網(wǎng)頁(yè) HTML靜態(tài)頁(yè)面。無(wú)交互。 2. 第二代:程序時(shí)代:CGI 通過(guò)CGI程序生成HTML網(wǎng)頁(yè),可交互,數(shù)據(jù)可存儲(chǔ)到數(shù)據(jù)庫(kù)。如C,C
13、+等。 3. 第三代:動(dòng)態(tài)網(wǎng)頁(yè) 程序和HTML代碼混合,由程序根據(jù)參數(shù)或條件決定如何生成HTML。另一特點(diǎn)是代碼單一,比如JSP中只用開發(fā)JSP和Servlet。訪問(wèn)數(shù)據(jù)庫(kù),業(yè)務(wù)邏輯,界面校驗(yàn)等混合,可讀性較差。 代表:ASP,JSP,PHP等。 4. 第四代:MVC框架,第一代 Web開發(fā)第一次有了MVC的概念,將數(shù)據(jù)模型,表現(xiàn)視圖和控制器相分離,使得Web開發(fā)更為專業(yè),簡(jiǎn)潔和高效。 缺點(diǎn):代碼與容器耦合過(guò)緊,程序員編碼需要操作很多容器相關(guān)的對(duì)象;單元測(cè)試?yán)щy;代碼難以復(fù)用。例如:通過(guò)request獲取參數(shù),手工創(chuàng)建formBean等。 代表:Struts1,Ofbiz等。 5. 第五代:M
14、VC框架,第二代 改進(jìn)MVC框架。開發(fā)實(shí)現(xiàn)容器無(wú)關(guān),formBean自動(dòng)封裝。便于單元測(cè)試,提高了移植和復(fù)用。其他改進(jìn)包括:AOP思想的運(yùn)用,插件式功能擴(kuò)展等。 有趣的是,這一時(shí)期,以Javascript為基礎(chǔ)Ajax技術(shù)廣泛流行;雖不能說(shuō)跟服務(wù)器段開發(fā)一點(diǎn)關(guān)系沒(méi)有,但“改進(jìn),優(yōu)化”的動(dòng)力與第五代Web開發(fā)技術(shù)的成熟是一樣的。 代表:Struts2,JFace,MyFaces。 這個(gè)階段劃分粒度還較細(xì)。如果按粗粒度可劃分為:靜態(tài)網(wǎng)頁(yè),動(dòng)態(tài)網(wǎng)頁(yè),MVC框架三個(gè)大階段。 富客端段開發(fā)如:ActiveX,Applet,F(xiàn)lex,JavaFX等屬于另一個(gè)分支,并且很早就出現(xiàn)了。MVC設(shè)計(jì)思想MVC英文
15、即Model-View-Controller,即把一個(gè)應(yīng)用的輸入、處理、輸出流程按照Model、View、Controller的方式進(jìn)行分離,這樣一個(gè)應(yīng)用被分成三個(gè)層模型層、視圖層、控制層。 視圖(View)代表用戶交互界面,對(duì)于Web應(yīng)用來(lái)說(shuō),可以概括為HTML界面,但有可能為XHTML、 HYPERLINK :/ itisedu /phrase/200604231236585.html t _new XML和 HYPERLINK :/ itisedu /phrase/200604201518585.html t _new Applet。隨著應(yīng)用的復(fù)雜性和規(guī)模性,界面的處理也變得具有挑戰(zhàn)性。
16、一個(gè)應(yīng)用可能有很多不同的視圖,MVC設(shè)計(jì)模式對(duì)于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以及用戶的請(qǐng)求,而不包括在視圖上的業(yè)務(wù)流程的處理。業(yè)務(wù)流程的處理交予模型(Model)處理。比如一個(gè)訂單的視圖只接受來(lái)自模型的數(shù)據(jù)并顯示給用戶,以及將用戶界面的輸入數(shù)據(jù)和請(qǐng)求傳遞給控制和模型。 模型(Model):就是業(yè)務(wù)流程/狀態(tài)的處理以及業(yè)務(wù)規(guī)則的制定。業(yè)務(wù)流程的處理過(guò)程對(duì)其它層來(lái)說(shuō)是黑箱操作,模型接受視圖請(qǐng)求的數(shù)據(jù),并返回最終的處理結(jié)果。業(yè)務(wù)模型的設(shè)計(jì)可以說(shuō)是MVC最主要的核心。目前流行的EJB模型就是一個(gè)典型的應(yīng) HYPERLINK :/ itisedu /phrase/20060424093710
17、5.html t _new 用例子,它從應(yīng)用技術(shù)實(shí)現(xiàn)的角度對(duì)模型做了進(jìn)一步的劃分,以便充分利用現(xiàn)有的ase/200603302222545.html t _new 組件,但它不能作為應(yīng)用 HYPERLINK :/ itisedu /phrase/200604161258515.html t _new 設(shè)計(jì)模型的框架。它僅僅告訴你按這種模型設(shè)計(jì)就可以利用某些技術(shù)組件,從而減少了技術(shù)上的困難。對(duì)一個(gè)開發(fā)者來(lái)說(shuō),就可以專注于業(yè)務(wù)模型的設(shè)計(jì)。MVC設(shè)計(jì)模式告訴我們,把應(yīng)用的模型按一定的規(guī)則抽取出來(lái),抽取的層次很重要,這也是判斷開發(fā)人員是否優(yōu)秀的設(shè)計(jì)依據(jù)。抽象與具體不能隔得太遠(yuǎn),也不能太近。MVC并沒(méi)有
18、提供模型的設(shè)計(jì)方法,而只告訴你應(yīng)該組織管理這些模型,以便于模型的 HYPERLINK :/ itisedu /phrase/200603121222205.html t _new 重構(gòu)和提高重用性。我們可以用 HYPERLINK :/ itisedu /phrase/200603090845215.html t _new 對(duì)象編程來(lái)做比喻,MVC定義了一個(gè)頂級(jí)類,告訴它的子類你只能做這些,但沒(méi)法限制你能做這些。這點(diǎn)對(duì)編程的開發(fā)人員非常重要。 業(yè)務(wù)模型還有一個(gè)很重要的模型那就是數(shù)據(jù)模型 菽橢饕 甘堤宥韻蟮氖 ?保存(持續(xù)化)。比如將一張訂單保存到 HYPERLINK :/ itisedu /ph
19、rase/200602271218062.html t _new 數(shù)據(jù)庫(kù),從數(shù)據(jù)庫(kù)獲取訂單。我們可以將這個(gè)模型單獨(dú)列出,所有有關(guān)數(shù)據(jù)庫(kù)的操作只限制在該模型中。 控制(Controller)可以理解為從用戶接收請(qǐng)求, 將模型與視圖匹配在一起,共同完成用戶的請(qǐng)求。劃分控制層的作用也很明顯,它清楚地告訴你,它就是一個(gè)分發(fā)器,選擇什么樣的模型,選擇什么樣的視圖,可以完成什么樣的用戶請(qǐng)求。控制層并不做任何的數(shù)據(jù)處理。例如,用戶點(diǎn)擊一個(gè)連接,控制層接受請(qǐng)求后, 并不處理業(yè)務(wù)信息,它只把用戶的信息傳遞給模型,告訴模型做什么,選擇符合要求的視圖返回給用戶。因此,一個(gè)模型可能對(duì)應(yīng)多個(gè)視圖,一個(gè)視圖可能對(duì)應(yīng)多個(gè)模
20、型。 模型、視圖與控制器的分離,使得一個(gè)模型可以具有多個(gè)顯示視圖。如果用戶通過(guò)某個(gè)視圖的控制器改變了模型的數(shù)據(jù),所有其它依賴于這些數(shù)據(jù)的視圖都應(yīng)反映到這些變化。因此,無(wú)論何時(shí)發(fā)生了何種數(shù)據(jù)變化,控制器都會(huì)將變化通知所有的視圖,導(dǎo)致顯示的更新。這實(shí)際上是一種模型的變化-傳播機(jī)制。模型、視圖、控制器三者之間的關(guān)系和各自的主要功能,如圖1所示。 Struts 2的介紹簡(jiǎn)介:Struts 2.x仍然是一個(gè)MVC框架。一般來(lái)說(shuō),某種軟件的第二個(gè)版本都是起源第一個(gè)版本,但實(shí)際上,Struts 2.x是個(gè)特例,它并非起源于Struts 1.x,而是起源于WebWork框架 另一MVC的框架。因此Struts
21、 2.x與Struts 1.X是沒(méi)有直接關(guān)系的。WebWork是Apache的另一個(gè)MVC框架,發(fā)布于2002年3月。WebWork 項(xiàng)目在起時(shí)曾參考過(guò)Struts 1.x,因?yàn)镾truts 1.x當(dāng)時(shí)已經(jīng)是個(gè)十分流行的MVC框架(Struts 1.x起源最早,應(yīng)用最廣的基于MVC框架的Java Web 技術(shù))。WebWork可以說(shuō)對(duì)Struts 1.x進(jìn)行了換血式的大改裝,從一個(gè)新的視覺(jué)實(shí)現(xiàn)MVC。拋棄了request、response等基于servlet 的API。從設(shè)計(jì)思想、易用性上看,作為后來(lái)者的WebWork則應(yīng)用時(shí)更勝一籌的,但是在使用上卻一直不如Struts 1.x廣泛。2005
22、年12月,WebWork項(xiàng)目與Struts項(xiàng)目宣布合并,并且推出Struts 2,其內(nèi)核是WebWork2。Struts 2有許多新特性,例如支持主題、集成DOJO框架、內(nèi)置AJAX等。Struts 2的官方網(wǎng)址為 HYPERLINK 。但是,Struts 2是對(duì)Struts 1.x的一個(gè)補(bǔ)充,而不是替代品,它們的思想是完全不同的。目前也有相當(dāng)多Struts 1.x系統(tǒng)正運(yùn)行在網(wǎng)絡(luò)上。Struts 官方同時(shí)提供Struts 1.x與Struts 2.x的下載。Struts2 是一個(gè)基于Action的MVC框架優(yōu)勢(shì) 的這種設(shè)計(jì)屬于無(wú)侵略式設(shè)計(jì))。,利用攔截器可以進(jìn)行AOP編程,實(shí)現(xiàn)如權(quán)限攔截等功
23、能。Struts 2.x提供支持多種表現(xiàn)層技術(shù),如:JSP、freeMarker、Velocity等提供了全局范圍、包范圍和Action范圍的國(guó)際化資源文件管理實(shí)現(xiàn)S目錄下文件簡(jiǎn)介SRC目錄:源文件包LIB目錄:技術(shù)的相關(guān)jar包DOCS目錄:幫助文檔APPS目錄:技術(shù)自帶的相關(guān)例題Struts 2開發(fā)環(huán)境的搭建搭建Struts 2.x環(huán)境時(shí),我們一般需要做以下幾個(gè)步驟的工作:下載或者需找 MVC框架啟動(dòng)配置4) Struts 開發(fā)環(huán)境的配置的要求 中的jar包的下載地址: ://download.cgi#struts2014 到該網(wǎng)址下下載。下載如圖所示:下
24、載后解壓該文件,開發(fā)序號(hào)Jar包名稱作用說(shuō)明struts2-core-.jarstruts2框架的核心類庫(kù)xwork-core-2.1.6.jarxwork類庫(kù),struts2在其上構(gòu)建ognl-.jar對(duì)象圖導(dǎo)航語(yǔ)言(Object Graph Navigation Language), struts2框架通過(guò)其讀寫對(duì)象的屬性freemarker-.jarstruts2的UI標(biāo)簽的模板freemarker編寫commons-logging-.jarASF出品的日志包,struts2框架使用這個(gè)日志來(lái)支持Log4J和JDK1.4+的日志記錄commons-fileupload-1.jar文件上傳
25、組件,版本后必須加入此文件注:我們所講的Struts版本為2.1.8,本課程的開發(fā)環(huán)境為:以上,tomcat 6版本以上,MyEclipse 8版本以上,所建工程遵循J2EE規(guī)范,代碼測(cè)試系統(tǒng)為win 7操作系統(tǒng)。Struts 版本開發(fā)環(huán)境要求本課程要求開發(fā)環(huán)境如下:IDE:MyEclipse 8.5數(shù)據(jù)庫(kù):Oracle 10g實(shí)戰(zhàn)編寫環(huán)境:win 7/window 2000/window xpStruts2的啟動(dòng)配置配置)在中, struts框架是通過(guò)Servlet啟動(dòng)的。在struts2中,struts框架是通過(guò)Filter啟動(dòng)的。他在web.xml中的配置如下: struts2!-org
26、.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /*在FilterDispatcher的init()方法中將會(huì)讀取類路徑下默認(rèn)的配置文件struts.xml完成初始化操作。Struts2的配置文件模版Struts2默認(rèn)的配置文件為struts.xml ,F(xiàn)ilterDispatcher過(guò)濾器在初始化時(shí)將會(huì)在WEB-INF/classes下尋找該文件,該文件的配置模版如下:第一個(gè)Struts2應(yīng)用第一步 project工程在MyEclipse8 工具下新建一個(gè)的web project工程,其工程
27、名為:第二步:在src目錄下創(chuàng)建一個(gè)文件Struts2默認(rèn)的配置文件為struts.xml ,我們?cè)贛yEclipse 8工具的項(xiàng)目中的SRC目錄下新建一個(gè)xml文件命名為:,其該文件的配置如下:(注:FilterDispatcher過(guò)濾器在初始化時(shí)將會(huì)在WEB-INF/classes下尋找該文件) 注:其中: 。 在struts2框架中使用包來(lái)管理Action,包的作用和java中的類包是非常類似的,它主要用于管理一組業(yè)務(wù)功能相關(guān)的action。在實(shí)際應(yīng)用中,我們應(yīng)該把一組業(yè)務(wù)功能相關(guān)的Action放在同一個(gè)包下。配置包時(shí)必須指定name屬性,如果其他包要繼承該包,必須通過(guò)該屬性進(jìn)行引用。包
28、的namespace屬性用于定義該包的命名空間。該屬性可以不配置,對(duì)本例而言,如果不指定該屬性,默認(rèn)的命名空間為“”(空字符串)。通常每個(gè)包都應(yīng)該繼承struts-default包, struts-default包是由struts內(nèi)置的,它定義了struts2內(nèi)部的眾多攔截器和Result類型。Struts2很多核心的功能都是通過(guò)這些內(nèi)置的攔截器實(shí)現(xiàn)的。如:從請(qǐng)求中把請(qǐng)求參數(shù)封裝到action、文件上傳和數(shù)據(jù)驗(yàn)證等等都是通過(guò)攔截器實(shí)現(xiàn)的。當(dāng)包繼承了struts-default包才能使用struts2提供的這些功能。 struts-default包是在struts2-core-2.x.x.jar
29、文件中的struts-default.xml中定義。 struts-default.xml也是Struts2默認(rèn)配置文件。 Struts2每次都會(huì)自動(dòng)加載 struts-default.xml文件。包還可以通過(guò)abstract=“true”定義為抽象包,抽象包中不能包含action。其中: 在struts1中,通過(guò)path屬性指定訪問(wèn)該action的URL路徑。在struts2中,情況就不是這樣了,訪問(wèn)struts2中的action的URL路徑由兩部份組成:包的命名空間+action的名稱,例如訪問(wèn)上面例子中名為helloworld的Action的URL路徑為:/test/helloworld
30、 (注意:完整路徑為: :/localhost:端口/內(nèi)容路徑/test/helloworld.action)。如果沒(méi)有為action指定class,默認(rèn)是ActionSupport。而ActionSupport的execute() 方法默認(rèn)處理就是返回一個(gè)success字符串。method屬性用于指定action中的那個(gè)方法,如果沒(méi)有指定默認(rèn)執(zhí)行action中的execute() 方法。第三步:新建一個(gè)java類新建的java類文件.FristAction如下:package com.hy.action;public class FristAction private String mess
31、age;private String msg;public String getMessage() return msg;public String execute()msg = Hy_0506班的第一個(gè)struts2應(yīng)用開發(fā);return success;第四步:導(dǎo)入jar包struts2-core-.jarxwork-core-.jarognl-.jarfreemarker-.jarcommons-logging-.jarcommons-fileupload-.jar第五步:配置 web.xml文件(struts2 啟動(dòng)配置) struts2 struts2 /* 第六步:建立顯示頁(yè)面hy
32、Frist.jsp 在工程的WebRoot目錄下創(chuàng)建hyFrist.jsp文件其內(nèi)容如下: 第一個(gè)struts2應(yīng)用 $message 第七步:在IE瀏覽上測(cè)試程序結(jié)果: 在IE瀏覽器地址上輸入: :/localhost:8888hy_0506/hyFrist 其顯示效果如下圖:注:開發(fā)環(huán)境要求:+oracle 10g解決在MyEclipse下Struts2配置文件無(wú)提示問(wèn)題無(wú)提示效果如下:兩種解決方法:第一種:機(jī)器連接到互聯(lián)網(wǎng)上開發(fā)環(huán)境下的工具必須已經(jīng)連接到網(wǎng)絡(luò)上,MyEclipse 8將會(huì)自動(dòng)去互聯(lián)網(wǎng)上尋找: HYPERLINK ://dtds/strut
33、s-2.0.dtd 同過(guò)該網(wǎng)址到互聯(lián)網(wǎng)上自動(dòng)尋找到文件,但是呢,一旦網(wǎng)絡(luò)丟包平凡的情況下,提示也不是很明顯。第二種:配置本地化的文件我在這里把下載的文件存放在C盤根目錄下,在文件目錄下找文件其路徑如下:C:struts--allstruts-srccoresrcmainresources在MyEclipse 8工具下配置操作步驟如下: Window Preferences MyEcilpse File and Editors XML XML Catalog add(添加按鈕)點(diǎn)擊add按鈕找到文件存放的目錄點(diǎn)擊File System.按鈕選擇則文件輸入Key:為 H
34、YPERLINK ://dtds/struts-2.0.dtd Key Type:URI點(diǎn)擊Ok 按鈕點(diǎn)擊父窗口OK 按鈕成功后:若是敲一個(gè)a達(dá)不到如下效果:在在敲完a后加上ALT+?鍵即一定會(huì)出現(xiàn)上圖的效果。注:MyEclipse 8工具好像配置本地化也照樣可以ALT+?作為提示,其他MyEclipse 6必須要配置本地化的文件引入。Action名稱的搜索順序包的及action類的搜索規(guī)律以我們的工程為例題,分析Action名稱的搜索順序:首先我們是在IE地址欄上輸入如下地址:rist 訪問(wèn)到我們FristAction類中的信息,我們發(fā)現(xiàn)hy_0506為命名
35、空間 hyFrist為訪問(wèn)的路徑當(dāng)我在IE地址欄上敲入如下地址:發(fā)現(xiàn)同樣可以成功的訪問(wèn)到FristAction類中的信息1獲得請(qǐng)求路徑的URI,例如url是: HYPERLINK :/localhost:8080/hy0506_Struts2.1_Demo1/hy_0506/xuqiao1/xuqiao2/hyFrist 2首先尋找namespace為/hy_0506/xuqiao1/xuqiao2的package,如果存在這個(gè)package,則在這個(gè)package中尋找名字為hy_0506的action,當(dāng)在該package下尋找不到action時(shí)就會(huì)跑到默認(rèn)namespace的packag
36、e里面去尋找action(默認(rèn)命名空間),如果不存在這個(gè)package則轉(zhuǎn)步驟3;注:我們把工程中的struts.xml文件改寫如下: 其中:package name=hy 的命名空間名稱為:/hy_0506package name=hy_it的命名空間為:默認(rèn)命名空間3尋找namespace為/hy_0506/xuqiao1的package,如果不存在這個(gè)package,則轉(zhuǎn)步驟4;如果存在這個(gè)package,則在這個(gè)package中尋找名字為hy_0506的action, 當(dāng)在該package中尋找不到action時(shí)就會(huì)直接跑到默認(rèn)namespace的package里面去找名字為hy_05
37、06的action,在默認(rèn)namespace的package里面還回去尋找不到該action,頁(yè)面提示找不到action;4尋找namespace為/ hy_0506的package,如果不存在這個(gè)package則執(zhí)行步驟5,如果存在這個(gè)package,則在這個(gè)package中尋找名字為hy_0506中的action,當(dāng)在該package中尋找不到action時(shí)就會(huì)直接跑到默認(rèn)namespace的package里面去找名字為hy_0506的package里面去找hy_0506中的action在namespace的package里面還尋找不到該action,頁(yè)面就會(huì)報(bào)404錯(cuò)誤。例如: HYPE
38、RLINK :/localhost:8080/hy0506_Struts2.1_Demo1/hy_10506/xuqiao/xuqiao/hyFrist 出現(xiàn)的錯(cuò)誤5尋找namespace為package,如果存在這個(gè)package,則在這個(gè)package中尋找名字為hy_0506中的action,如果還是找不到,頁(yè)面提示找不 action,即404錯(cuò)誤。例如: HYPERLINK :/localhost:8080/hy0506_Struts2.1_Demo1/hy_0506/xuqiao1/xuqiao2/hyFrist_1 出現(xiàn)的錯(cuò)誤給Action配置的各項(xiàng)默認(rèn)值在MyEclipse 8下
39、新建一個(gè)工程名為:,SRC下的java 代碼仍然為:.FristAction;(配置好web.xml,導(dǎo)入必要的6個(gè)jar包,同樣把拷貝過(guò)來(lái))其配置如下: 新建一個(gè)其代碼如下: base href= 用戶查詢 form action=/com/hy/list method=get 用戶名: 我們?cè)贗E地址欄上敲入: HYPERLINK :/localhost:8080/hy0506_Struts2.1_Demo2/com/hy/addUsers 我們發(fā)現(xiàn)也可以訪問(wèn)到:那我們來(lái)分析一下: Action配置文件各項(xiàng)默認(rèn)值發(fā)現(xiàn)如下action配置既沒(méi)有class的配置又沒(méi)有method的配置(met
40、hod=execute 中的execute是所有action中默認(rèn)的方法,我們后面會(huì)詳細(xì)的介紹),result也沒(méi)有指定成功返回的name(success)值的描述 如果沒(méi)有為action指定class,默認(rèn)是ActionSupport如果沒(méi)有為action指定method,默認(rèn)執(zhí)行action中的execute()方法如果沒(méi)有指定result的name屬性,默認(rèn)值為success.對(duì)xwork-core-2.1.6.jar文件中的 ActionSupport源代碼分析/=/package com.hy.action;import ;public class FristAction priva
41、te String message;private String msg;public String getMessage() return msg;public String execute()msg = Hy_0506班的第一個(gè)struts2應(yīng)用開發(fā);return success;/=/當(dāng)我在 . FristAction類中引入包:; 按住Ctrl鍵點(diǎn)擊ActionSupport 出現(xiàn)如下界面: 點(diǎn)擊External File 導(dǎo)入文件,打開ActionSupport 類中的execute()方法,出現(xiàn)界面如下圖所示:Action中result的各種轉(zhuǎn)發(fā)類型繼續(xù)新建一個(gè)的項(xiàng)目工程我們以這工
42、程為例題詳解轉(zhuǎn)發(fā)類型的配置,(需要把項(xiàng)目工程代碼引入進(jìn)去) list list /hy_result Result配置類似于struts1中的forward,單struts2中提供多種結(jié)果類型,常用的類型有:dispatcher(默認(rèn)值)、redirect、redirectAction、plainText.注釋:action中result的各種轉(zhuǎn)發(fā)類型,即就是給result跳轉(zhuǎn)指定一個(gè)類型我們這里重點(diǎn)講解四種跳轉(zhuǎn)方式: 默認(rèn)跳轉(zhuǎn)(dispatcher)、重定向(result)、鏈條式跳轉(zhuǎn)、客戶端跳轉(zhuǎn)(chain)。dispatcher(運(yùn)用服務(wù)器跳轉(zhuǎn),默認(rèn)值) 若是JSP文件存放在WEB-IN
43、F下的話訪問(wèn)地址也可以訪問(wèn)到該JSP文件相當(dāng)于JSP中forward跳轉(zhuǎn),但是這種跳轉(zhuǎn)只能跳轉(zhuǎn)到頁(yè)面即只能跳轉(zhuǎn)到j(luò)sp或者HTML文件或者freemarker(VIWE層的框架)頁(yè)面,不能跳轉(zhuǎn)到action。redirect(重定向)在result中還可以使用$屬性名表達(dá)式訪問(wèn)action中的屬性,表達(dá)式里的屬性名對(duì)應(yīng)action中的屬性。如下: 對(duì)于修改或者刪除的操作很管用相當(dāng)于servlet中的重定向跳轉(zhuǎn)(在IE地址上進(jìn)行重定向)若是JSP文件存放在WEB-INF下的話訪問(wèn)地址不可以訪問(wèn)到該JSP文件Redirect類型的跳轉(zhuǎn)也只能跳轉(zhuǎn)到j(luò)sp或者HTML頁(yè)面Chain(鏈條) 相當(dāng)于JS
44、P中forward跳轉(zhuǎn),但是這種跳轉(zhuǎn)與dispatcher不同可以跳轉(zhuǎn)到action(例如xx.action)路徑 list list /hy_result redirectAction(客戶端跳轉(zhuǎn))下面是redirectAction結(jié)果類型的例子,如果重定向的action中同一個(gè)包下:hyFrist如果重定義的action在別的命名空間下: hyFrist /hyStream 下載的一種跳轉(zhuǎn),在講解上傳下載時(shí)候我會(huì)詳細(xì)講解plaintext(顯示原始文件內(nèi)容)plainText顯示原始文件內(nèi)容,例如:當(dāng)我們需要原樣顯示jsp文件源代碼的時(shí)候,我們可以使用此類型。 UTF-8注:該跳轉(zhuǎn)要慎用,
45、它用于顯示頁(yè)面的源代碼所用的。Freemarker 基于freemarker框架的跳轉(zhuǎn)方式,這里就不進(jìn)行詳細(xì)介紹了。 header 就是發(fā)一送個(gè) 的頭信息,這里就不進(jìn)行詳細(xì)介紹了。Velocity 基于Velocity框架的跳轉(zhuǎn)方式,這里就不進(jìn)行詳細(xì)介紹了。Velocity和freemarker都是基于MVC模式中視圖層的一個(gè)框架,現(xiàn)在freemarker框架比Velocity框架更加優(yōu)秀,做網(wǎng)站需要用到這兩個(gè)框架,做系統(tǒng)基本不用。Xslt Xslt是與XML相關(guān)修飾的XML語(yǔ)言,這里就不進(jìn)行詳細(xì)介紹了。Tiles Tiles是把一個(gè)頁(yè)面分成幾塊,每塊是可以動(dòng)態(tài)進(jìn)行條狀,這里就不進(jìn)行詳細(xì)介紹了
46、。為Action屬性注入值 Struts2為action 中的屬性提供了依賴注入功能,在struts2的配置文件中,我們可以很方便地為Action中的屬性注入值。注意:屬性必須提供setter方法。第一步:新建一個(gè)工程工程第二步:導(dǎo)入必要包第三步:新建一java文件代碼如下:package com.hy.action;public class UserManager private String username; private String pwd; private String sex;public String getUsername() return username;public
47、void setUsername(String username) this.username = username;public String getPwd() return pwd;public void setPwd(String pwd) this.pwd = pwd;public String getSex() return sex;public void setSex(String sex) this.sex = sex; public String execute() throws Exception return success; 第四步配置好 SCOTT 123 男 第五步: base href= My JSP index.jsp starting page !- $username $pwd $sex 第六步:在IE瀏覽器上輸入如下地址:指定Struts2處理的請(qǐng)求后綴.其實(shí)默認(rèn)后綴是可以通常量“”進(jìn)行修改的,例如可以配置Struts2只處理以.do為后綴的請(qǐng)求路徑拷貝項(xiàng)目,修改項(xiàng)目名稱為:,項(xiàng)目訪問(wèn)路徑也為:改寫
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全知識(shí)答題試題及答案
- 安全員c2考試試題及答案
- 2025年鄉(xiāng)村旅游項(xiàng)目開發(fā)與社區(qū)和諧發(fā)展研究報(bào)告
- 推進(jìn)家校合作教育機(jī)制創(chuàng)新促進(jìn)協(xié)
- 2025年家庭教育指導(dǎo)服務(wù)市場(chǎng)家庭教育行業(yè)品牌形象塑造報(bào)告001
- 安全工作規(guī)程試題及答案
- 心態(tài)方面的培訓(xùn)課件
- 配色培訓(xùn)課件圖片大全
- 藝術(shù)培訓(xùn)營(yíng)招生課件
- 中國(guó)歷代服裝史
- 駕駛員崗前知識(shí)培訓(xùn)
- 催告函(二手房買賣合同糾紛)
- 嵐圖新能源汽車品牌規(guī)劃營(yíng)銷方案
- 新生兒先天性腎上腺皮質(zhì)增生癥護(hù)理體會(huì)
- 異常子宮出血的護(hù)理查房
- 錫槽缺陷手冊(cè)下教學(xué)課件
- 2022年中國(guó)美術(shù)學(xué)院輔導(dǎo)員招聘考試真題
- 輪機(jī)概論-大連海事大學(xué)
- 醫(yī)學(xué)高級(jí)職稱正高《中醫(yī)內(nèi)科學(xué)》(題庫(kù))模擬試卷一
- 個(gè)人所得稅匯算清繳課件
- 《汽車保險(xiǎn)理賠服務(wù)研究10000字(論文)》
評(píng)論
0/150
提交評(píng)論