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