風中葉之struts2學習筆記一
Struts2
1, struts官方網址:http://struts.apache.org/
2,
Struts是
3,
Struts的概念和體系結構
4,
MVC模式的優點
5, JSP model1
6, JSP model2
7, Struts2必須使用的最小jar檔案
commons-fileupload-1.2.2.jar ;commons-io-2.0.1.jar;commons-lang3-3.1.jar ;ognl-3.0.5.jar ;struts2-core-2.3.4.jar ; xwork-core-2.3.4.jar ;freemarker-2.3.19.jar ;
javassist-3.11.0.GA.jar ;(該jar包不在lib中,可以到例子中找到)
8, struts是通過過濾器(Filter)與應用關聯的,在web.xml檔案中加入
9, struts還必須配置自己的檔案,struts.xml,一定要在src目錄下建立,其中開始的dtd可以到例子中拷貝
10, 登入頁面和結果顯示頁面都是jsp頁面,比較簡單,就不在贅述
11, 關聯原始碼方法:專案名右鍵àBuild PathàConfigure Builder PathàLibrariesà點開struts2-core-2.3.4.jaràSource attachment (None)àEditàExternal Folderà”E:/WEB-jar包/struts-2.3.4/src/core/src/main/java”
12, 根據開源專案原始碼生成javadoc幫助文件
1)新建一個普通的java專案,如struts_doc
2)將目錄\struts-2.3.4\src\core\src\main\java裡面內容拷貝到新建專案的src目錄下
3)匯入需要的jar檔案,選擇Add External Jars,除了struts2-core-2.3.4.jar都加入
4)在Tomcat中servlet-api.jar和jsp-api.jar同樣加入進來
5)選單欄ProjectàGenerate javadoc
13,整個執行流程:表單輸入完資料提交給login.action,流程轉到struts.xml檔案中,它裡面會有多個action,逐一去匹配;接著流程轉到匹配到的login對應的class:LoginAction,例項化LoginAction物件,將頁面提交過來的資訊呼叫set方法逐個賦值給成員變數,接著自動呼叫execute方法,這個方法的返回值就是一個String,不能隨便寫,return的結果會跟action的子元素result進行匹配,流程轉到result元素對應的頁面result.jsp,該jsp頁面顯示使用者提交的資料。
13, struts2不是單例項的,每一次請求都會生成一個Action物件。而struts1,Servlet都是單例項的。
14,
Struts2的型別轉換,對於8種基本型別以及String,Date等常見型別,Struts2可以使用內建的型別轉換器實現自動轉換;但對於自定義的物件型別來說,需要我們自己制定轉換方式。
15,
1)表單頁面
2)JavaBean
3)struts.xml中進行配置,並且建立對應的Action類UserAction,UserAction類繼承自ActionSupport類,對於實際開發來說,都要繼承ActionSupport類,它提供了諸如國際化,型別轉換,伺服器端驗證等等。
4)編寫型別轉換器converter,所有的型別轉換器都應該繼承自DefaultTypeConverter(ognl)
5)屬性與型別轉換器關聯檔案 Action名-conversion.properties,如UserAction-conversion.properties
6)user01_output.jsp頁面
16, 對於自定義的型別轉換器來說,需要提供3方面的資訊:Action名字、Action中待轉換的屬性名以及該屬性對應的型別轉換器
17, 對於自定義的轉換器,我們可以繼承StrutsTypeConverter,它有兩個抽象的方法convertFromString(Map context,String[] values,Class toClass) ,convertToString(Map context,Object o),實際上就是將DefaultTypeConverter類中的convertValue()方法進行了拆分。
18, 批量轉換,跟普通的轉換沒有區別,只是原來使用的屬性是User型別,現在使用List<User>;
19, 全域性型別轉換用的比較少,區域性型別轉換的“***-conversion.properties”與Action在同一包下面,而全域性型別轉換檔案是在src下,檔名固定“xwork-conversion.properties”
實際開發中,更多的還是使用區域性轉換器。
20, Action類中的execute()方法,類似於Servlet中的doGet(),doPost()方法,預設執行的是execute()方法,我們也可以指定我們自己的方法進行處理。即在struts.xml中action元素中定義屬性method,屬性值即為待執行的方法,其中該方法要與execute保持一致,但是不推薦使用,因為容易造成Action混亂。
21,輸入驗證舉例
1) 註冊頁面
2) struts.xml中註冊
3) RegisterAction的處理
22,兩種級別錯誤資訊的使用方式及標籤庫的顯示方式
23,struts2標籤的使用
24,輸入校驗總結:
1) 首先進行型別轉換
2) 然後進行輸入校驗(validate方法)
3) 如果在上述步驟中出現了任何錯誤,都不會執行execute方法,會轉向struts.xml中該action的名為input的result所對應的頁面。
4) 當上述過程沒有任何錯誤時,才會執行execute方法。
注意:如果在型別轉換過程中出現了錯誤,struts2會將該錯誤放到filed錯誤級別。
25,ActionSupport類的addActionError()方法的實現:首先建立一個ArrayList物件,然後將錯誤訊息新增到該ArrayList中。
26,當呼叫getActionErrors()方法返回Action級別的錯誤資訊列表,返回的實際上是集合一個副本而不是集合本身,因此對集合副本呼叫clear()方法清除的依舊是副本中的元素而非原集合的元素。我們可以呼叫
this.clearErrors();//兩種級別的錯誤都會被清除
或者分別呼叫兩種級別的錯誤訊息
this.clearActionErrors();
this.clearFieldErrors();
27,FieldError級別的錯誤資訊底層是用LinkedHashMap實現的,該Map的key是String型別的,value是List<String>型別的,這就表示一個Field Name可以對應多條錯誤資訊,這些錯誤資訊都放置在List<String>集合當中。
相關文章
- struts2學習筆記系列(一)筆記
- Struts2學習筆記(一)初識Strut2筆記
- 安卓學習筆記之Activity(一)安卓筆記
- struts2筆記(一)筆記
- canvas學習之API整理筆記(一)CanvasAPI筆記
- 模式識別學習筆記——貝葉斯決策模式筆記
- 學習筆記(一)筆記
- struts2學習筆記–使用servletAPI實現ajax的一個小Demo筆記ServletAPI
- 學習筆記之IdentityServer4(一)筆記IDEServer
- JSTL Tag學習筆記(一)之<c: />JS筆記
- centos5.4之apache學習筆記(一)CentOSApache筆記
- Deep Learning(深度學習)學習筆記整理系列之(一)深度學習筆記
- 學習筆記----圖論學習中筆記圖論
- Java之struts2框架學習Java框架
- Java學習大全 之 Struts2Java
- node學習筆記之39筆記
- 學習筆記之測試筆記
- Swoft 學習筆記之配置筆記
- Boltdb學習筆記之〇--概述筆記
- flask學習筆記之blueprintFlask筆記
- JS學習筆記之this指向JS筆記
- Java學習筆記之staticJava筆記
- oracle之awr學習筆記Oracle筆記
- Web之http學習筆記WebHTTP筆記
- Struts2框架學習(一)框架
- Open CV 學習開發筆記之概述(一)筆記
- kitten 學習教程(一) 學習筆記筆記
- LaTeX學習筆記:一筆記
- ANFIS學習筆記(一)筆記
- Angular 學習筆記(一)Angular筆記
- GOLang 學習筆記(一)Golang筆記
- oracle學習筆記《一》Oracle筆記
- React 學習筆記【一】React筆記
- Jquery學習筆記(一)jQuery筆記
- goLang學習筆記(一)Golang筆記
- Canvas學習筆記(一)Canvas筆記
- SCSS學習筆記(一)CSS筆記
- vue學習筆記一Vue筆記