【Struts2】Struts2技術基礎
阿新 • • 發佈:2020-09-08
Struts2 框架
Struts2 概念: mvc設計思想中,控制器的解決方案。(替代並簡化 servlet的控制器開發)
優點: ①程式碼解耦和(跳轉路徑不會寫死在程式碼中
②自動接受請求引數,自動轉化型別,自動封裝成實體
③跳轉路徑的程式碼,消除
④一個Struts2控制器可以書寫多個方法,便於管理
⑤Struts2程式碼書寫角度,脫離Servlet的api.便於單元測 試(普通java類)
1).第一個Struts2程式(Struts2的環境搭建、配置及其執行)
(1)搭建Struts環境 匯入jar包 (2)匯入struts.xml,放入src的根目錄下 (3)配置struts2的前端控制器(核心控制器),web.xml <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> (4)寫一個類和方法,在struts.xml中配置資訊 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="struts" extends="struts-default"> <action class="全類名 " name="訪問action的名字" method="類的方法名"> <result name="ok">/index.jsp</result> </action> </package> </struts> 啟動TomCat訪問時,路徑+action的名字
2).Struts2內建工具類(ServletActionContext)、接受請求引數、及其action的生命週期
(1)Struts2內建工具類 工具類: ServletActionContext 作用:獲得request response servletContext 物件。 (2)Struts2接受請求引數 ### struts接受請求引數核心特點 ①使用Action的屬性接受 ②自動資料型別轉化(Integer Double Long String Date) ③自動實體物件的封裝 ### 基本資料型別和包裝型別資料接收,以及String、Date Integer Double Long String Date(預設支援格式: yyyy-MM-dd yyyy年MM月dd日) ①在Action中宣告屬性 ②屬性名必須要和請求引數名保持一致 ③提供標準set和get方法 ### 陣列型別(List集合型別)引數接受 ①在Action中宣告陣列型別的屬性。 ②保證屬性名和請求引數名一直 ③提供set、get方法。 ### 封裝實體物件 ①在action宣告實體型別的屬性 ②保證請求引數的名字格式:`action的屬性名.實體屬性名` ③提供set和get方法 (3)Struts2的Action的生命週期 Servlet的生命週期: ①瀏覽器第一次訪問建立 ②tomcat關閉銷燬 ③一個Servlet類只建立一個servlet物件。 Struts2實現的控制器生命週期: ①建立:瀏覽器每次訪問,都會新建action物件。 ②個數:N個。 ③生命週期一次請求過程。 優點: action使用屬性接受資料,是執行緒安全。 為什麼要講aciton設計多例? ①struts2使用action的屬性接受資料。 ②如果action只建立一個,多執行緒訪問臨街資源,執行緒不安全。 底層設計: 瀏覽器請求------sturts2的action---反射建立物件。(Action action = new XXxxAction) 並request.setAttribute("名字",action);
3).Struts2實戰action的開發規範、跳轉
(1)實戰Action開發規範 控制器編寫:將業務邏輯相關的控制器方法,放在同一個Action類中。 package: 作用: 在struts.xml管理action標籤。 將業務邏輯相關的控制方法的配置action標籤,放在同一個package標籤下。 namespace: 訪問action: `/專案名/namespace/action的name` 標籤: <package name="user" extends="struts-default" namespace="/user"> <action name="fAction"></action> </package> 訪問: /專案名/user/fAction 開發規範:將業務邏輯相關的action的訪問路徑,放在同一個namespace下。 (2)跳轉 預設: action--->jsp(請求轉發) ①Action--->JSP 請求轉發 (展示所有控制器跳轉到展示所有jsp): 預設: 請求重定向 (註冊成功後跳轉到登入頁面): <action name="" class="" method=""> <result name="方法返回值" type="跳轉方式">跳轉後的jsp的URL-pattern</result> </action> type可選值: dispatcher(請求轉發) 、redirect(請求重定向) ②Action---->Action(同包跳轉) <action name="" class="" method=""> <result name="方法返回值" type="跳轉方式">跳轉後的action的名字</result> </action> type可選值: chain(請求轉發)、 redirectAction(請求重定向) ③Action跨namespace跳轉到Action <action name="" class="" method=""> <result name="方法返回值" type="跳轉方式"> <param name="namespace">目標跳轉的action所在的namespace</param> <param name="actionName">目標action的name</param> </result> </action> type: chain(請求轉發)、redirectAction(請求重定向) 4).Request的作用域、struts2的常量配置、以及配置檔案簡化 (1)request作用域 ①通過ServletActionContext獲得request物件。 ②Action的屬性自動放入request作用域中。 (2)struts2的常量配置 預設配置檔案: struts2-core-2.3.16.3.jar (org.apache.struts/default.properties) ①設定請求引數的編碼: <constant name="struts.i18n.encoding" value="UTF-8"></constant> ②設定action預設請求字尾 struts.action.extension=action <constant name="struts.action.extension" value="do"></constant> ③檔案上傳大小設定 struts.multipart.maxSize=2097152: 預設單個檔案上傳大小限制,單位位元組: 2M 設定檔案上傳大小為20M <constant name="struts.multipart.maxSize" value="20000000"></constant> (3)action配置檔案簡化 ①配置通用的action訪問路徑 ②特點: 好處: 簡化action標籤,開發程式碼少。 缺點: 可讀性差。