Action及Struts原理.ppt_第1頁(yè)
Action及Struts原理.ppt_第2頁(yè)
Action及Struts原理.ppt_第3頁(yè)
Action及Struts原理.ppt_第4頁(yè)
Action及Struts原理.ppt_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、,Struts2中的Action及Struts原理,章節(jié)內(nèi)容,1、Action及ActionSupport,具體視圖的返回可以由用戶(hù)自己定義的Action來(lái)決定。具體的手段是根據(jù)返回的字符串找到對(duì)應(yīng)的配置項(xiàng),來(lái)決定視圖的內(nèi)容 具體Action的實(shí)現(xiàn)可以是一個(gè)普通的java類(lèi),里面有public String execute方法即可或者實(shí)現(xiàn)Action接口 不過(guò)最常用的是ActionSupport繼承,好處在于可以直接使用Struts2封裝好的方法 總結(jié): 綜上所述,在開(kāi)發(fā)中,我們建議自己定義的action繼承ActionSupport.,默認(rèn)ActionSupport, -默認(rèn)訪問(wèn)Action

2、Support /Namespace.jsp ,默認(rèn)Action, /default.jsp 上述代碼,如果寫(xiě)了個(gè)連接:http:/localhost:8080/project/fdsafdsafdas 或者是project/*.action 沒(méi)有對(duì)應(yīng)的這個(gè)action,那么就會(huì)默認(rèn)執(zhí)行,在struts2.0中project/*.action 有效,project/fdsafdsafdas這個(gè)要2.1以后的版本 找不到這個(gè)action的時(shí)候才轉(zhuǎn)到別的result里面。,2、Action名稱(chēng)的搜索順序,1、獲得請(qǐng)求路徑的URL,例如url是:http:/server/struts2/path1/

3、paht2/path3/test.action 2、首先尋找namespace為/path1/paht2/path3的package,如果不存在這個(gè)package則執(zhí)行步驟3;如果存在這個(gè)package,則在這個(gè)package中尋找名字為test的action,當(dāng)在該package下尋找不到action時(shí)就會(huì)直接跑到默認(rèn)namespace的package里面去尋找action(默認(rèn)的命名空間為空字符串“”),如果在默認(rèn) namespace的package里面還尋找不到該action,頁(yè)面提示找不到action 3、尋找namespace為/path1/path2的package,如果不存在這個(gè)

4、package,則轉(zhuǎn)至步驟4;如果存在這個(gè) package,則在這個(gè)package中尋找名字為test的action,當(dāng)在該package中尋找不到action時(shí)就會(huì)直接跑 到默認(rèn)namespace的package里面去找名字為test的action,在默認(rèn)namespace的package里面還尋找不到該action,頁(yè)面提示找不到action 4.尋找namespace為/path1的package,如果不存在這個(gè)package則執(zhí)行步驟5,如果存在這個(gè)package,則在這個(gè)package中尋找名字為test的action,當(dāng)在該package中尋找不到action時(shí)就會(huì)直接跑到默認(rèn) n

5、amespace的package里面去找名字為test的action,在默認(rèn)namespace的package里面還尋找不到該 action,頁(yè)面提示找不到action 5、尋找namespace為/的package,如果存在這個(gè)package,則在這個(gè)package中尋找名字為test的action,當(dāng)在package中尋找不到action或者不存在這個(gè)package時(shí),都會(huì)去默認(rèn)namespace的package里面尋找action,如果還是找不到,頁(yè)面提示找不到action. 6.如果輸入http:/localhost:8888/工程名/,那么,就找不到對(duì)應(yīng)的action,這個(gè)時(shí)候就會(huì)交

6、給tomcat處理 tomcat就會(huì)找到web.xml,然后,如果web.xml中定義了歡迎頁(yè)面,就進(jìn)入歡迎頁(yè)面。, /WEB-INF/page/hellostruts2.jsp 比如:上面的加入輸入:http:/localhsot:8081/struts2/test/helloworld 看Struts.xml中的配置我們可以發(fā)現(xiàn):/test下面沒(méi)有helloworld,這個(gè)時(shí)候,就會(huì)來(lái)找默認(rèn)的包(沒(méi)有名字的,或者namespace=“”的包),如果有的話(huà),就會(huì)找到,否則,估計(jì)會(huì)報(bào)錯(cuò)。,實(shí)例說(shuō)明,3、Action中調(diào)用方法,(1)、使用execute()方法 (2)、Action執(zhí)行的時(shí)候并

7、不一定要執(zhí)行execute方法 可以在配置文件中配置Action的時(shí)候用method=來(lái)指定執(zhí)行哪個(gè)方法會(huì)產(chǎn)生太多的action,不推薦使用。 (3)、在url地址中動(dòng)態(tài)指定(動(dòng)態(tài)方法調(diào)用DMI) (4)、通配符配置,例2(在url地址中動(dòng)態(tài)指定),Index.jsp: /user/user!add添加用戶(hù) 或者使用按鈕: Function regist() /獲取jsp頁(yè)面中的一個(gè)表單元素 targetForm=document.forms0; /動(dòng)態(tài)修改目標(biāo)表單的action屬性 targetForm.action=“user!add” Struts.xml: /useraddsucces

8、s.jsp ,例1(method),Index.jsp: /user/userAdd添加用戶(hù) Struts.xml: /useraddsuccess.jsp ,例3(通配符配置)-1,Index.jsp: /actions/Studentadd添加學(xué)生 /actions/Studentdelete刪除學(xué)生 Struts.xml: /Student1_success.jsp 使用通配符,將配置量降低!,例3(通配符配置)-2-2(action),public class TeacherAction extends ActionSupport public String add() return

9、SUCCESS; public String delete() return SUCCESS; ,通配符配置相關(guān)原理,如果有URL為abcAction.action的請(qǐng)求,如果struts.xml文件中有名為abcAction的Action,則一定由該Action來(lái)處理用戶(hù)請(qǐng)求;如果struts.xml文件中沒(méi)有名為abcAction的Action,則搜尋name屬性值能匹配abcAction的Action,例如name為*Action或*,*Action并不會(huì)比*更優(yōu)先匹配abcAction的請(qǐng)求,而是先找到哪個(gè)Action,就會(huì)由哪個(gè)Action來(lái)處理用戶(hù)請(qǐng)求。(按照在struts.xml

10、中的書(shū)寫(xiě)順序),例3(通配符配置)-2-1,Index.jsp: /actions/Teacher_add添加老師 /actions/Teacher_delete刪除老師 /actions/Course_add添加課程 /actions/Course_delete刪除課程 Struts.xml: /1_2_success.jsp ,2、Action配置的各項(xiàng)默認(rèn)值, /WEB-INF/page/hello.jsp /WEB-INF/page/employeeAdd.jsp 如上面的圖所示,只要我輸入如下, http:/localhsot:8081/struts2/test/addUI 就會(huì)直接

11、找到頁(yè)面employeeAdd.jsp. 總結(jié)如下: 1、如果沒(méi)有為action 指定class,默認(rèn)是ActionSupport 2、如果沒(méi)有為action指定method,默認(rèn)執(zhí)行action中的execute方法, 3、如果沒(méi)有指定result的name屬性,默認(rèn)值為success.到源代碼中的ActionSupport.class中的execute,看看是不是return SUCCESS;,3、為Action的屬性注入值,Struts2為Action中的屬性提供了依賴(lài)注入功能,在Struts2的配置文件中,我們可以很方便地為Action中的屬性注入值。注意:屬性必須提供setter方法。 Public class HelloWorldAction pr

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論