欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

struts配置

系統(tǒng) 1675 0

Action, ActionForm, ActionForward ,這三個(gè)對(duì)象構(gòu)成了Struts 的核心。
Struts 最核心的控制器是ActionServlet ,該Servlet 攔截用戶請(qǐng)求,井將用戶請(qǐng)求轉(zhuǎn)入到Struts 體系內(nèi)。
一、配置ActionServlet
ActionServlet 是一個(gè)標(biāo)準(zhǔn)的Servlet ,在web.xml 文件中配置,該Servlet 用于攔所有的HTTP 請(qǐng)求。因此,應(yīng)將該Servlet 配置成自啟動(dòng)Servlet ,即為該Servlet 配置load-on-startup 屬性。
注意:在應(yīng)用Struts 的很多場(chǎng)景下,為Servlet 配直load-on-startup 屬性都是必需的。因此,筆者建議應(yīng)為ServletAction 配直load-an-startup 屬性。
在web.xml 文件中配置ActionServlet 應(yīng)增加如下片段:

Xml代碼 復(fù)制代碼
  1. <!--?將ActionServlet配置成自啟動(dòng)的Servlet?--> ??
  2. < servlet > ??
  3. ???? <!--?指定Servlet?的名字?--> ??
  4. ???? < servlet-name > actionSevlet </ servlet-name > ??
  5. ???? <!--?指定該Servlet?的實(shí)現(xiàn)類?--> ??
  6. ???? < servlet-class > ??
  7. ????????org.apache.struts.action.ActionServlet ??
  8. ???? </ servlet-class > ??
  9. ???? <!--?配置自啟動(dòng)的級(jí)別?--> ??
  10. ???? < load-on-startup > 2 </ load-on-startup > ??
  11. </ servlet > ??
  12. < servlet-mapping > ??
  13. ???? <!--?配置ActionServlet的URL?映射?--> ??
  14. ???? < servlet-name > actionSevlet </ servlet-name > ??
  15. ???? <!--?所有以.do?結(jié)尾的請(qǐng)求由ActionServlet攔截?--> ??
  16. ???? < url-pattern > *.do </ url-pattern > ??
  17. </ servlet-mapping > ??


該ActionServlet作為一個(gè)標(biāo)準(zhǔn)Servlet,配置在Web 應(yīng)用中,負(fù)責(zé)攔截用戶請(qǐng)求。該Servlet 還有加載Struts 配置文件的責(zé)任。但這里并未告訴它如何加載Struts 的配置文
件,以及Struts 的配置文件放在哪里及文件名是什么。ActionServlet默認(rèn)加載WEB-INF 下的struts-config.xml文件。如果需要Struts 的配置文件不在WEB-INF路徑下,或者改變了文件名,則應(yīng)采用如下方式配置:

Xml代碼 復(fù)制代碼
  1. < servlet > ??
  2. ???? < servlet-name > actionSevlet </ servlet-name > ??
  3. ???? < servlet-class > ??
  4. ????????org.apache.struts.action.ActionServlet ??
  5. ???? </ servlet-class > ??
  6. ???? < init-param > ??
  7. ???????? < param-name > config </ param-name > ??
  8. ???????? < param-value > /WEB-INF/struts-config-user.xml </ param-value > ??
  9. ???? </ init-param > ??
  10. ???? < load-on-startup > 2 </ load-on-startup > ??
  11. </ servlet > ??


在上面的配置中,指定了ActionServlet 的配置文件: struts-config-user.xml文件,該文件作為init-param參數(shù)載入,載入時(shí)候指定了參數(shù)名:config ,config 是Struts 固定的參數(shù)名, struts負(fù)責(zé)解析該參數(shù),并加載該參數(shù)的指定的配置文件。Struts 支持使用多個(gè)配置文件,當(dāng)有多個(gè)配置文件時(shí),應(yīng)將不同的配置文件配置成不同的模塊,并指定不同的URI。下面的片段配置了兩個(gè)配置文件:

Xml代碼 復(fù)制代碼
  1. < servlet > ??
  2. ???? <!--?ActionServlet?的名?--> ??
  3. ???? < servlet-name > actionSevlet </ servlet-name > ??
  4. ???? <!--?配置Servlet?的實(shí)現(xiàn)類?--> ??
  5. ???? < servlet-class > ??
  6. ????????org.apache.struts.action.ActionServlet ??
  7. ???? </ servlet-class > ??
  8. ???? <!--?指定Struts?的第一個(gè)配置文件?--> ??
  9. ???? < init-param > ??
  10. ???????? <!--?指定配置文件的映射?--> ??
  11. ???????? < param-name > config </ param-name > ??
  12. ???????? < param-value > /WEB-INF/struts-con工fgl.xml </ param-value > ??
  13. ???? </ init-param > ??
  14. ???? <!--?指定Struts?的第二個(gè)配置文件?--> ??
  15. ???? < init-param > ??
  16. ???????? <!--?指定配置文件的映射?--> ??
  17. ???????? < param-name > config/wawa </ param-name > ??
  18. ???????? < param-value > /WEB-INF/struts-config2.xml </ param-value > ??
  19. ???? </ init-param > ??
  20. ???? <!--?將ActionServlet配置成自啟動(dòng)Servlet?--> ??
  21. ???? < load-on-startup > 2 </ load-on-startup > ??
  22. </ servlet > ??


上面的配置片段中指定了兩個(gè)配置文件:struts-config l.xml 和struts-config2.xml 文件。這兩個(gè)配置文件分別被配置到config 和config/wawa 的路徑下。表明將struts-config 1.xml 中的Action 映射到應(yīng)用的根路徑下,而struts-config2.xml 文件中的Action 則被映射到應(yīng)用的wawa 子路徑下。也就是說(shuō)wawa 將作為系統(tǒng)的一個(gè)模塊使用。
二、配置ActionForm
配置ActionForm ,必須包含ActionForm 類才行。Struts 要求ActionForm 必須繼承Struts 的基類: org.apache.struts.action.ActionForm,ActionForm 的實(shí)現(xiàn)非常簡(jiǎn)單,該類只是一個(gè)普通的JavaBean,只要為每個(gè)屬性提供對(duì)應(yīng)的setter 和getter 方法即可。根據(jù)前面的講解, ActionForm 用于封裝用戶的請(qǐng)求參數(shù),而請(qǐng)求參數(shù)是通過(guò)JSP 頁(yè)面的表單域傳遞過(guò)來(lái)的。因此應(yīng)保證ActionForm 的參數(shù)與表單域的名字相同。
注意: JavaB ean 的參數(shù)是根據(jù)getter 、setter 方法確定的。如果希望有一個(gè)A 的屬性,則應(yīng)該提供getA 和setA 的方法。
(1)ActionForm的實(shí)現(xiàn)
ActionForm 的屬性必須與JSP 頁(yè)面的表單域相同。本示例的表單包含如下兩個(gè)表單域:
? usemame
? password
因此, ActionForm 必須繼承org.apache.struts.action.ActionForm,并為這兩個(gè)域提供對(duì)應(yīng)的setter 和getter 方法,下面是ActionForm 的源代碼:

Java代碼 復(fù)制代碼
  1. import ?org.apache.struts.action.ActionForm; ??
  2. public ? class ?LoginForm? extends ?ActionForm?{ ??
  3. ???? private ?String?username; ??
  4. ???? private ?String?password; ??
  5. ??
  6. ???? //?表單域username對(duì)應(yīng)的setter?方法 ??
  7. ???? /** ?
  8. ?????*?@return?the?username ?
  9. ?????*/ ??
  10. ???? public ?String?getUsername()?{ ??
  11. ???????? return ?username; ??
  12. ????} ??
  13. ??
  14. ???? /** ?
  15. ?????*?@param?username ?
  16. ?????*????????????the?username?to?set ?
  17. ?????*/ ??
  18. ???? public ? void ?setUsername(String?username)?{ ??
  19. ???????? this .username?=?username; ??
  20. ????} ??
  21. ??
  22. ???? /** ?
  23. ?????*?@return?the?password ?
  24. ?????*/ ??
  25. ???? public ?String?getPassword()?{ ??
  26. ???????? return ?password; ??
  27. ????} ??
  28. ??
  29. ???? /** ?
  30. ?????*?@param?password ?
  31. ?????*????????????the?password?to?set ?
  32. ?????*/ ??
  33. ???? public ? void ?setPassword(String?password)?{ ??
  34. ???????? this .password?=?password; ??
  35. ????} ??
  36. ??
  37. }??


另外,該ActionForm 的兩個(gè)屬性名可以不是usemame 和password。只要提供了usemame 和password 的setter 和getter 方法即可。
注意: FormBean 類應(yīng)盡量聲明成public。
(2)ActionForm 的配置
所有的ActionForm 都被配置在struts-config.xml 文件中,該文件包括了一個(gè)form-beans 的元素,該元素內(nèi)定義了所有的ActionForm,每個(gè)ActionForm 對(duì)應(yīng)一個(gè)form-bean 元素。
為了定義LoginForm. 必須在struts-config.xml文件中增加如下代碼:

Xml代碼 復(fù)制代碼
  1. <!--?用于定義所有的ActionForm?--> ??
  2. < form-beans > ??
  3. ???? <!--?定義ActionForm,至少指定兩個(gè)屬性:?name?,?type--> ??
  4. ???? < form-bean ? name = "loginForm" ? type = "lee.LoginForm" ? /> ??
  5. </ form-beans > ??


配置ActionForm非常簡(jiǎn)單,只需指定ActionForm 的name 屬性即可。該屬性定義了ActionForm的id. 用于標(biāo)識(shí)該Form; 另外還需要一個(gè)type 屬性,該屬性定義了ActionForm的實(shí)現(xiàn)類。
下面將介紹Action 如何使用該ActionForm. 以及Action 如何與該ActionForm關(guān)聯(lián)。
三、配置Action
Action 的配置比ActionForm 相對(duì)復(fù)雜一點(diǎn),因?yàn)锳ction 負(fù)責(zé)管理與之關(guān)聯(lián)的ActionForm. 它不僅需要配置實(shí)現(xiàn)類,還需要配置Action 的path 屬性,該屬性用于被用
戶請(qǐng)求。對(duì)于只需在本Action 內(nèi)有效的Forward. 還應(yīng)在Action 元素內(nèi)配置局部Forward。
(1)Action 的實(shí)現(xiàn)
通過(guò)ActionForm. 可使Action 無(wú)須從HTTP 請(qǐng)求中解析參數(shù)。因?yàn)樗械膮?shù)都被封裝在ActionForm中,下面是Action 從AcitionForm 取得請(qǐng)求參數(shù)的源代碼:

Java代碼 復(fù)制代碼
  1. import ?javax.servlet.http.HttpServletRequest; ??
  2. import ?javax.servlet.http.HttpServletResponse; ??
  3. import ?org.apache.struts.action.Action; ??
  4. import ?org.apache.struts.action.ActionForm; ??
  5. import ?org.apache.struts.action.ActionForward; ??
  6. import ?org.apache.struts.action.ActionMapping; ??
  7. public ? class ?LoginAction? extends ?Action?{ ??
  8. ???? //?必須重寫該核心方法,該方法actionForm?將表單的請(qǐng)求參數(shù)封裝成值對(duì)象 ??
  9. ???? public ?ActionForward?execute(ActionMapping?mapping,?ActionForm?form, ??
  10. ????????????HttpServletRequest?request,?HttpServletResponse?response) ??
  11. ???????????? throws ?Exception?{ ??
  12. ???????? //將ActionForm強(qiáng)制類型轉(zhuǎn)換為L(zhǎng)oginForm ??
  13. ????????LoginForm?loginForm?=?(LoginForm)?form; ??
  14. ???????? //?從ActionForm中解析出請(qǐng)求參數(shù):?username ??
  15. ????????String?username?=?loginForm.getUsername(); ??
  16. ???????? //?從ActionForm中解析出請(qǐng)求參數(shù):?password ??
  17. ????????String?pass?=?loginForm.getUsername(); ??
  18. ???????? //后面的處理與前一個(gè)示例的Action?相同。 ??
  19. ????????... ??
  20. ????} ??
  21. }??


該Action 從轉(zhuǎn)發(fā)過(guò)來(lái)的ActionForm 中解析請(qǐng)求參數(shù),對(duì)應(yīng)的ActionForm 則由ActionServlet 在接收到用戶請(qǐng)求時(shí),負(fù)責(zé)實(shí)例化。
實(shí)際的過(guò)程是: ActionServlet 攔截到用戶請(qǐng)求后,根據(jù)用戶的請(qǐng)求,在配置文件中查找對(duì)應(yīng)的Action , Action 的name 屬性指定了用于封裝請(qǐng)求參數(shù)的ActionForm; 然后ActionServlet 將創(chuàng)建默認(rèn)的ActionForm 實(shí)例,并調(diào)用對(duì)應(yīng)的setter 方法完成ActionForm的初始化。
ActionServlet 在分發(fā)用戶請(qǐng)求時(shí),也將對(duì)應(yīng)ActionForm 的實(shí)例一同分發(fā)過(guò)來(lái)。
(2)Action 的配置
Action 需要配置如下幾個(gè)方面。
? Action 的path: ActionServlet 根據(jù)該屬性來(lái)轉(zhuǎn)發(fā)用戶的請(qǐng)求,即將用戶請(qǐng)求轉(zhuǎn)發(fā)與之同名的Action 。同名的意思是:將請(qǐng)求的.do 后綴去掉,匹配Action 的path屬性值。
? Action 的name: 此處的name 屬性并不是Action 本身的名字,而是與Action 關(guān)聯(lián)的ActionForm。因此該name 屬性必須是前面存在的ActionForm 名。
? Action 的type: 該屬性用于指定Action 的實(shí)現(xiàn)類,也就是負(fù)責(zé)處理用戶請(qǐng)求的業(yè)
務(wù)控制器。
? 局部Forward: Action 的轉(zhuǎn)發(fā)并沒(méi)有轉(zhuǎn)發(fā)到實(shí)際的JSP 資源,而是轉(zhuǎn)發(fā)到邏輯名,即Forward 名。在Action 內(nèi)配置的Forward 都是局部Forward (該Forward 只在該Action 內(nèi)有效)。
下面是該Action 的配置代碼:

Xml代碼 復(fù)制代碼
  1. <!--?該元素里配置所有的Action?--> ??
  2. < action-mappings > ??
  3. ???? <!--?配置Action.?指定了path?,?name?,?type?等屬性?--> ??
  4. ???? < action ? path = "/login" ? type = "lee.LoginAction" ? name = "loginForm" > ??
  5. ???????? <!--?配置局部Forward?--> ??
  6. ???????? < forward ? name = "welcome" ? path = "/WEB-INF/jsp/welcome.jsp" ? /> ??
  7. ???????? < forward ? name = "input" ? path = "/login.jsp" ? /> ??
  8. ???? </ action > ??
  9. </ action-mappings > ??


四、配置Forward
正如前面所講, Forward 分局部Forw缸d 和全局Forward 兩種。前者在Action 里配置,僅對(duì)該Action 有效:后者單獨(dú)配置,對(duì)所有的Action 都有效。
配置Forward 非常簡(jiǎn)單,主要需要指定以下三個(gè)屬性。
? name: 該Forward 的邏輯名。
? path: 該Forward 映射到的JSP 資源。
? redirect: 是否使用重定向。
局部Forward 作為Action 的子元素配置;全局Forward 配置在global-forwards 元素里。
下面是配置全局Forward 的代碼:

Xml代碼 復(fù)制代碼
  1. <!--?配置全局Forward?--> ??
  2. < global-forwards > ??
  3. ???? <!--?配置Forward對(duì)象的name?和path?屬性?--> ??
  4. ???? < forward ? name = "error" ? path = "/WEB-INF/jsp/error.jsp" ? /> ??
  5. </ global-forwards > ??


上面的配置代碼中,配置了一個(gè)全局Forward,該Forward 可以被所有的Action 訪問(wèn)。通常,只將全局資源配置成全局Forward。當(dāng)每個(gè)Action 在轉(zhuǎn)發(fā)時(shí),首先在局部Forward 中查找與之對(duì)應(yīng)的Forward,如果在局部Forward 中找不到對(duì)應(yīng)的Forward 對(duì)象,才會(huì)到全局Forward 中查找。因此,局部Forward 可以覆蓋全局Forward。
下面提供了該應(yīng)用的struts-config.xm1文件的全部源代碼:

Xml代碼 復(fù)制代碼
  1. <? xml ? version = "1.0" ? encoding = "UTF-8" ?> ??
  2. <!--?Struts?配置文件的文件頭,包含DTD?等信息?--> ??
  3. <!DOCTYPE?struts-config?PUBLIC?"-//Apache?Software?Foundation//DTD?Struts?Configuration?1.2//EN"?"http://struts.apache.org/dtds/struts-config_1_2.dtd" > ??
  4. <!--Struts?配置文件的根元素?--> ??
  5. < struts-config > ??
  6. ???? <!--配置所有的ActionForm?--> ??
  7. ???? < form-beans > ??
  8. ???????? <!--配置第一個(gè)ActionForm,指定ActionForm的name?和type?屬性?--> ??
  9. ???????? < form-bean ? name = "loginForm" ? type = "lee.LoginForm" ? /> ??
  10. ???? </ form-beans > ??
  11. ???? <!--配置全局Forward對(duì)象?--> ??
  12. ???? < global-forwards > ??
  13. ???????? <!--該Forward對(duì)象的name?屬性為error.?映射資源為/WEB-INF/jsp/error.jsp?--> ??
  14. ???????? < forward ? name = "error" ? path = "/WEB-INF/jsp/error.jsp" ? /> ??
  15. ???? </ global-forwards > ??
  16. ???? <!--此處配置所有的Action?映射--> ??
  17. ???? < action-mappings > ??
  18. ???????? <!--配置Action?的path.?type?屬性name?屬性配置Action?對(duì)應(yīng)的ActionForm--> ??
  19. ???????? < action ? path = "/login" ? type = "lee.LoginAction" ? name = "loginForm" > ??
  20. ???????????? <!--還配置了兩個(gè)局部Forward.?這兩個(gè)局部Forward僅對(duì)該Action有效--> ??
  21. ???????????? < forward ? name = "welcome" ? path = "/WEB-INF/jsp/welcome.jsp" ? /> ??
  22. ???????????? < forward ? name = "input" ? path = "/login.jsp" ? /> ??
  23. ???????? </ action > ??
  24. ???? </ action-mappings > ??
  25. </ struts-config > ??

?

struts配置


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 成人在线中文字幕 | 日韩成人精品在线 | 五月天欧美激情午夜情 | 午夜亚洲 | 欧美日韩在线免费观看 | 91成人影院未满十八勿入 | 欧美综合视频 | 91视频国内 | 免费黄色大片 | 一级片成人 | 日日操夜夜操天天操 | 一级黄色免费片 | 国产精品久久久久久久久免费相片 | 91高清视频在线免费观看 | 亚洲成人一区二区 | 日韩一级片播放 | 啪一啪 | av片免费 | 国产一区二区三区久久久久久久久 | 久草在线播放视频 | 午夜视频在线网站 | 91久久国产综合久久 | 欧美精品一区二区在线电影 | 久久亚洲第一 | 国产精品久久久久久久久久免费 | 欧美日韩一区二区三区在线观看 | 亚洲自偷自偷精品 | 精品乱子伦一区二区三区 | 欧美aⅴ片 | 午夜电影通 | 日韩视频在线免费观看 | 四虎在线免费观看 | 日本三级视频 | 美女下面直流白浆视频 | 日韩av电影免费看 | 久草成人在线 | 天天爽夜夜爽 | 天天拍天天干 | 亚洲综合无码一区二区 | 亚洲视频一区在线 | 日韩不卡一区二区 |