亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

struts配置

系統 1830 0

Action, ActionForm, ActionForward ,這三個對象構成了Struts 的核心。
Struts 最核心的控制器是ActionServlet ,該Servlet 攔截用戶請求,井將用戶請求轉入到Struts 體系內。
一、配置ActionServlet
ActionServlet 是一個標準的Servlet ,在web.xml 文件中配置,該Servlet 用于攔所有的HTTP 請求。因此,應將該Servlet 配置成自啟動Servlet ,即為該Servlet 配置load-on-startup 屬性。
注意:在應用Struts 的很多場景下,為Servlet 配直load-on-startup 屬性都是必需的。因此,筆者建議應為ServletAction 配直load-an-startup 屬性。
在web.xml 文件中配置ActionServlet 應增加如下片段:

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


該ActionServlet作為一個標準Servlet,配置在Web 應用中,負責攔截用戶請求。該Servlet 還有加載Struts 配置文件的責任。但這里并未告訴它如何加載Struts 的配置文
件,以及Struts 的配置文件放在哪里及文件名是什么。ActionServlet默認加載WEB-INF 下的struts-config.xml文件。如果需要Struts 的配置文件不在WEB-INF路徑下,或者改變了文件名,則應采用如下方式配置:

Xml代碼 復制代碼
  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參數載入,載入時候指定了參數名:config ,config 是Struts 固定的參數名, struts負責解析該參數,并加載該參數的指定的配置文件。Struts 支持使用多個配置文件,當有多個配置文件時,應將不同的配置文件配置成不同的模塊,并指定不同的URI。下面的片段配置了兩個配置文件:

Xml代碼 復制代碼
  1. < servlet > ??
  2. ???? <!--?ActionServlet?的名?--> ??
  3. ???? < servlet-name > actionSevlet </ servlet-name > ??
  4. ???? <!--?配置Servlet?的實現類?--> ??
  5. ???? < servlet-class > ??
  6. ????????org.apache.struts.action.ActionServlet ??
  7. ???? </ servlet-class > ??
  8. ???? <!--?指定Struts?的第一個配置文件?--> ??
  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?的第二個配置文件?--> ??
  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配置成自啟動Servlet?--> ??
  21. ???? < load-on-startup > 2 </ load-on-startup > ??
  22. </ servlet > ??


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

Java代碼 復制代碼
  1. import ?org.apache.struts.action.ActionForm; ??
  2. public ? class ?LoginForm? extends ?ActionForm?{ ??
  3. ???? private ?String?username; ??
  4. ???? private ?String?password; ??
  5. ??
  6. ???? //?表單域username對應的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 的兩個屬性名可以不是usemame 和password。只要提供了usemame 和password 的setter 和getter 方法即可。
注意: FormBean 類應盡量聲明成public。
(2)ActionForm 的配置
所有的ActionForm 都被配置在struts-config.xml 文件中,該文件包括了一個form-beans 的元素,該元素內定義了所有的ActionForm,每個ActionForm 對應一個form-bean 元素。
為了定義LoginForm. 必須在struts-config.xml文件中增加如下代碼:

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


配置ActionForm非常簡單,只需指定ActionForm 的name 屬性即可。該屬性定義了ActionForm的id. 用于標識該Form; 另外還需要一個type 屬性,該屬性定義了ActionForm的實現類。
下面將介紹Action 如何使用該ActionForm. 以及Action 如何與該ActionForm關聯。
三、配置Action
Action 的配置比ActionForm 相對復雜一點,因為Action 負責管理與之關聯的ActionForm. 它不僅需要配置實現類,還需要配置Action 的path 屬性,該屬性用于被用
戶請求。對于只需在本Action 內有效的Forward. 還應在Action 元素內配置局部Forward。
(1)Action 的實現
通過ActionForm. 可使Action 無須從HTTP 請求中解析參數。因為所有的參數都被封裝在ActionForm中,下面是Action 從AcitionForm 取得請求參數的源代碼:

Java代碼 復制代碼
  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?將表單的請求參數封裝成值對象 ??
  9. ???? public ?ActionForward?execute(ActionMapping?mapping,?ActionForm?form, ??
  10. ????????????HttpServletRequest?request,?HttpServletResponse?response) ??
  11. ???????????? throws ?Exception?{ ??
  12. ???????? //將ActionForm強制類型轉換為LoginForm ??
  13. ????????LoginForm?loginForm?=?(LoginForm)?form; ??
  14. ???????? //?從ActionForm中解析出請求參數:?username ??
  15. ????????String?username?=?loginForm.getUsername(); ??
  16. ???????? //?從ActionForm中解析出請求參數:?password ??
  17. ????????String?pass?=?loginForm.getUsername(); ??
  18. ???????? //后面的處理與前一個示例的Action?相同。 ??
  19. ????????... ??
  20. ????} ??
  21. }??


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

Xml代碼 復制代碼
  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 里配置,僅對該Action 有效:后者單獨配置,對所有的Action 都有效。
配置Forward 非常簡單,主要需要指定以下三個屬性。
? name: 該Forward 的邏輯名。
? path: 該Forward 映射到的JSP 資源。
? redirect: 是否使用重定向。
局部Forward 作為Action 的子元素配置;全局Forward 配置在global-forwards 元素里。
下面是配置全局Forward 的代碼:

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


上面的配置代碼中,配置了一個全局Forward,該Forward 可以被所有的Action 訪問。通常,只將全局資源配置成全局Forward。當每個Action 在轉發時,首先在局部Forward 中查找與之對應的Forward,如果在局部Forward 中找不到對應的Forward 對象,才會到全局Forward 中查找。因此,局部Forward 可以覆蓋全局Forward。
下面提供了該應用的struts-config.xm1文件的全部源代碼:

Xml代碼 復制代碼
  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. ???????? <!--配置第一個ActionForm,指定ActionForm的name?和type?屬性?--> ??
  9. ???????? < form-bean ? name = "loginForm" ? type = "lee.LoginForm" ? /> ??
  10. ???? </ form-beans > ??
  11. ???? <!--配置全局Forward對象?--> ??
  12. ???? < global-forwards > ??
  13. ???????? <!--該Forward對象的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?對應的ActionForm--> ??
  19. ???????? < action ? path = "/login" ? type = "lee.LoginAction" ? name = "loginForm" > ??
  20. ???????????? <!--還配置了兩個局部Forward.?這兩個局部Forward僅對該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配置


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久精品亚洲一级毛片 | 久久久久久网站 | 成人免费一级毛片在线播放视频 | 99久久久无码国产精品 | 婷婷色六月 | 中国精品白嫩bbwbbw | 在线免费观看一区二区三区 | 久久乱码精品区中文字幕 | 亚洲国产日韩a在线亚洲 | 爱爱爱免费视频 | 久久精品亚洲精品国产色婷 | 欧美一级爱爱视频 | 久久久高清免费视频 | 在线看欧美三级中文经典 | 黄色69| 亚洲国产成人久久精品影视 | 99久久这里只有精品 | 国产激情一区二区三区四区 | 亚洲欧美精品国产一区色综合 | 午夜一级毛片看看 | 一区二区三区毛片免费 | 日韩国产欧美一区二区三区 | 老司机一级毛片 | 一级毛片免费在线播放 | 色综合久久一区二区三区 | 99精品免费久久久久久久久日本 | 91正在播放极品白嫩在线观看 | 免费观看成人www精品视频在线 | 久久久久久草 | 色综合伊人色综合网亚洲欧洲 | 91模特 | 亚洲欧美一区二区三区综合 | 1级黄色毛片| 久久一级| 一区二区美女视频 | 97影院官网 | 欧美久久久久欧美一区 | 午夜精品福利视频 | 日韩毛片最新看 | 咪咪爱在线观看 | 国产特级片|