第二章 Struts2中的Action.ppt_第1頁(yè)
第二章 Struts2中的Action.ppt_第2頁(yè)
第二章 Struts2中的Action.ppt_第3頁(yè)
第二章 Struts2中的Action.ppt_第4頁(yè)
第二章 Struts2中的Action.ppt_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Struts2 中的Action,課程結(jié)構(gòu),第二章:Struts2中的Action,目標(biāo): 本章旨在向?qū)W員介紹: 1)Action的作用 2)Action的編寫(xiě)方式 3)DMI以及通配符的使用 4)接受用戶數(shù)據(jù)的方式 5)訪問(wèn)web元素的方式 6)Struts2常見(jiàn)的結(jié)果類型 7)常見(jiàn)的常量定義,時(shí)間:6學(xué)時(shí) 教學(xué)方法:授課+練習(xí),第二章: Struts2中的Action,本章內(nèi)容 2.1 Action簡(jiǎn)介 2.2 Action接受請(qǐng)求參數(shù) 2.3 Struts2中訪問(wèn)web元素 2.4 默認(rèn)Action 2.5 Action中result的各種轉(zhuǎn)發(fā)類型 2.6 配置文件中的include 2

2、.7 常量定義,2.1.1 Action簡(jiǎn)介,Struts2有兩個(gè)重要的控制器: StrutsPrepareAndExecuteFilter: 中央控制器(核心控制器,Struts2框架提供),負(fù)責(zé)接收所有請(qǐng)求 Action: 業(yè)務(wù)邏輯控制器,負(fù)責(zé)處理單個(gè)特定請(qǐng)求 創(chuàng)建Action有三種方式: 一個(gè)普通的類, 不需要實(shí)現(xiàn)任何接口或繼承任何類。 實(shí)現(xiàn)Action接口 繼承ActionSupport類,最常用的一種方式,好處在于可以直接使用Struts2封裝好的方法,2.1.2 創(chuàng)建Action的方式,一個(gè)普通的類,package com.neusoft.action; import com.op

3、ensymphony.xwork2.Action; public class HelloAction public String execute() throws Exception System.out.println(HelloAction.); return “success”; , /hello.jsp ,2.1.2 創(chuàng)建Action的方式,實(shí)現(xiàn)Action接口,package com.neusoft.action; import com.opensymphony.xwork2.Action; public class HelloAction implements Action pub

4、lic String execute() throws Exception System.out.println(HelloAction.); return SUCCESS; , /hello.jsp ,2.1.2 創(chuàng)建Action的方式,繼承ActionSupport類,package com.neusoft.action; import com.opensymphony.xwork2.ActionSupport; public class HelloAction extends ActionSupport public String execute() System.out.println

5、(HelloAction); return SUCCESS; , /hello.jsp ,2.1.3 Action的配置,在Struts2框架中每一個(gè)Action是一個(gè)工作單元。Struts2框架負(fù)責(zé)將一個(gè)請(qǐng)求對(duì)應(yīng)到一個(gè)Action上去,每當(dāng)一個(gè)Action類匹配一個(gè)請(qǐng)求的時(shí)候,這個(gè)Action類就會(huì)被Struts2框架調(diào)用。 Struts.xml中的每一個(gè)action元素就是一個(gè)action映射。action完整的屬性如表所示:,2.1.3 Action的配置,Action配置中的各項(xiàng)默認(rèn)值: 如果沒(méi)有為action指定class,默認(rèn)是ActionSupport。 如果沒(méi)有為action指

6、定method,默認(rèn)執(zhí)行action中的execute() 方法。 如果沒(méi)有指定result的name屬性,默認(rèn)值為success。, /hello.jsp ,2.1.4 Action名稱的搜索順序,1獲得請(qǐng)求路徑的URI,例如url是:http:/server/struts2/path1/path2/path3/test.action 2首先尋找namespace為/path1/path2/path3的package,如果存在這個(gè)package,則在這個(gè)package中尋找名字為test的action,如果不存在這個(gè)package則轉(zhuǎn)步驟3; 3尋找namespace為/path1/path

7、2的package,如果存在這個(gè)package,則在這個(gè)package中尋找名字為test的action,如果不存在這個(gè)package,則轉(zhuǎn)步驟4; 4尋找namespace為/path1的package,如果存在這個(gè)package,則在這個(gè)package中尋找名字為test的action,如果仍然不存在這個(gè)package,就去默認(rèn)的namaspace的package下面去找名字為test的action(默認(rèn)的命名空間為空字符串 ),如果還是找不到,頁(yè)面提示找不到action。,2.1.5 DMI以及通配符,Action執(zhí)行的時(shí)候并不一定要執(zhí)行execute方法 可以在配置文件中配置Actio

8、n的時(shí)候用method屬性來(lái)指定執(zhí)行哪個(gè)方法 如果Action中存在多個(gè)方法時(shí),可以在url地址中動(dòng)態(tài)指定(動(dòng)態(tài)方法調(diào)用DMI)(推薦) /user/user!add添加用戶 如果不想使用動(dòng)態(tài)方法調(diào)用,我們可以通過(guò)常量struts.enable.DynamicMethodInvocation關(guān)閉動(dòng)態(tài)方法調(diào)用。 前者會(huì)產(chǎn)生太多的action配置,所以不推薦使用,2.1.5 DMI以及通配符,使用通配符,將配置量降到最低 不過(guò),一定要遵守約定優(yōu)于配置的原則 同時(shí),struts2還支持*_*的配置模式, 例如: 如果路徑中沒(méi)有通配符,則此Action優(yōu)先級(jí)最高;如果路徑中有通配符,不論是何種通配符,

9、按順序匹配, /1_2.jsp ,第二章: Struts2中的Action,本章內(nèi)容 2.1 Action簡(jiǎn)介 2.2 Action接受請(qǐng)求參數(shù) 2.3 Struts2中訪問(wèn)web元素 2.4 默認(rèn)Action 2.5 Action中result的各種轉(zhuǎn)發(fā)類型 2.6 配置文件中的include 2.7 常量定義,2.2.1 Action接收請(qǐng)求參數(shù)的方式,三種方式: 使用Action屬性接收參數(shù) 使用DomainModel接收參數(shù) 使用ModelDriven接口接收參數(shù),2.2.2 使用Action屬性,在Action類中定義與請(qǐng)求參數(shù)同名的屬性,struts2便能自動(dòng)接收請(qǐng)求參數(shù)并賦予給同

10、名屬性。 請(qǐng)求路徑: http:/localhost:8080/param/view.action?username=“neusoft”,public class ParamAction extends ActionSupport private String username; public String getUsername() /必須的要set/get方法 return username; public void setUsername(String username) /struts2通過(guò)反射技術(shù)調(diào)用與請(qǐng)求參/數(shù)同名的屬性的setter方法來(lái)獲取請(qǐng)求參數(shù)值 this.username

11、 = username; public String execute() System.out.println(username:+username); return SUCCESS; ,2.2.3 使用DomainModel,請(qǐng)求路徑: http:/localhost:8080/param/view.action?user.username=“neusoft”,public class User private String username; public String getUsername() return username; public void setUsername(Strin

12、g username) this.username = username; ,public class ParamAction extends ActionSupport private User user; public User getUser() return user; public void setUser(User user) this.user = user; public String execute() System.out.println(username:+user.getUsername(); return SUCCESS;,2.2.4 使用ModelDriven接口,

13、請(qǐng)求路徑: http:/localhost:8080/param/view.action?username=“neusoft”,public class ParamAction extends ActionSupport implements ModelDriven private User user=new User(); public User getModel() return user; public String execute() System.out.println(username:+user.getUsername(); return SUCCESS; ,public cla

14、ss User private String username; public String getUsername() return username; public void setUsername(String username) this.username = username; ,第二章: Struts2中的Action,本章內(nèi)容 2.1 Action簡(jiǎn)介 2.2 Action接受請(qǐng)求參數(shù) 2.3 Struts2中訪問(wèn)web元素 2.4 默認(rèn)Action 2.5 Action中result的各種轉(zhuǎn)發(fā)類型 2.6 配置文件中的include 2.7 常量定義,2.3.1 Struts2

15、中訪問(wèn)web元素的四種方式,1. 通過(guò)ActionContext來(lái)訪問(wèn)Map類型的request、session、application對(duì)象 2. 通過(guò)實(shí)現(xiàn)RequestAware、SessionAware、ApplicationAware接口來(lái)訪問(wèn)Map類型的request、session、application對(duì)象(IoC方式) 3. 通過(guò)ServletActionContext來(lái)訪問(wèn)Servlet API類型的HttpServletRequest、 HttpSession、 ServletContext對(duì)象(依賴于Servlet API 方式) 4. 通過(guò)實(shí)現(xiàn)ServletRequest

16、Aware接口來(lái)訪問(wèn)Servlet API類型的HttpServletRequest、 HttpSession、 ServletContext對(duì)象(IoC方式) 其中,前兩種方式與Servlet API解耦合,后兩種方式與Servlet API耦合,推薦使用第二種方式。,2.3.2 通過(guò)ActionContext,public class AttributeAction extends ActionSupport private Map request; private Map session; private Map application; public AttributeAction()

17、 request=(Map)ActionContext.getContext().get(request); session=ActionContext.getContext().getSession(); application=ActionContext.getContext().getApplication(); public String execute() request.put(req, “req); session.put(ses, “ses); application.put(app, “app); return SUCCESS; ,2.3.3 實(shí)現(xiàn)RequestAware、S

18、essionAware、ApplicationAware接口,public class AttributeAction extends ActionSupport implements RequestAware,SessionAware,ApplicationAware private Map request; private Map session; private Map application; public void setRequest(Map request) this.request=request; public void setSession(Map session) thi

19、s.session=session; public void setApplication(Map application) this.application=application; public String execute() request.put(req, “req); session.put(ses, “ses); application.put(app, “app); return SUCCESS;,2.3.4 通過(guò)ServletActionContext,public class AttributeAction extends ActionSupport private Htt

20、pServletRequest request; private HttpSession session; private ServletContext application; public AttributeAction() request=ServletActionContext.getRequest(); session=request.getSession(); application=session.getServletContext(); public String execute() request.put(req, “req); session.put(ses, “ses);

21、 application.put(app, “app); return SUCCESS; ,2.3.5 通過(guò)實(shí)現(xiàn)ServletRequestAware接口,public class AttributeAction4 extends ActionSupport implements ServletRequestAware private HttpServletRequest request; private HttpSession session; private ServletContext application; public void setServletRequest(HttpServ

22、letRequest request) session=request.getSession(); application=session.getServletContext(); public String execute() request.setAttribute(req, aaa3); session.setAttribute(ses, bbb3); application.setAttribute(app, ccc3); return SUCCESS; ,第二章: Struts2中的Action,本章內(nèi)容 2.1 Action簡(jiǎn)介 2.2 Action接受請(qǐng)求參數(shù) 2.3 Strut

23、s2中訪問(wèn)web元素 2.4 默認(rèn)Action 2.5 Action中result的各種轉(zhuǎn)發(fā)類型 2.6 配置文件中的include 2.7 常量定義,2.4.1 默認(rèn)Action,如果訪問(wèn)一個(gè)不存在的action,就會(huì)默認(rèn)的訪問(wèn)標(biāo)簽中name屬性定義的action,此處為名稱為index的action。, HelloWorld /example ,第二章: Struts2中的Action,本章內(nèi)容 2.1 Action簡(jiǎn)介 2.2 Action接受請(qǐng)求參數(shù) 2.3 Struts2中訪問(wèn)web元素 2.4 默認(rèn)Action 2.5 Action中result的各種轉(zhuǎn)發(fā)類型 2.6 配置文件中的

24、include 2.7 常量定義,2.5 Action中result的各種轉(zhuǎn)發(fā)類型,chain:處理action鏈,跳轉(zhuǎn)到下一個(gè)action redirectAction:重定向到一個(gè)action redirect:重定向到一個(gè)URL dispatcher:轉(zhuǎn)發(fā)到Jsp httpheader:控制特殊http行為 stream:向?yàn)g覽器發(fā)送InputStream對(duì)象 FreeMarker:跳轉(zhuǎn)到模板文件 velocity:處理velocity模板 xslt:處理xml/xlst plaintext:顯示原始文件內(nèi)容,例如:當(dāng)我們需要原樣顯示jsp文件源代碼 的時(shí)候,我們可以使用此類型。,2.5.1 Action中常見(jiàn)的結(jié)果類型, /WEB-INF/result/forward.jsp /redirect.jsp re re ,2.5.1 Action中的結(jié)果類型,如果重定向或者轉(zhuǎn)發(fā)的action在別的命名空間下: helloworld /test 在result中還可以使用$屬性名表達(dá)式訪問(wèn)action中的屬性,表達(dá)式里的屬性名對(duì)應(yīng)action中的屬性。如下:, /param.jsp?age=$age ,2.5.2 全局result配置,當(dāng)多個(gè)action中都使用到了相同視圖,這時(shí)我們應(yīng)該把result定義為全局視圖。struts1中提供了全局forward,

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論