從實例看struts2運行原理1.1簡單例子先做一個最簡單的struts2的例子:在瀏覽器中請求一個action,然后返回一個字符串到jsp頁面上顯示出來。第一步:把struts2最低配置的jar包加入的項目中。
Struts2 運行流程如下: 1). 請求發送給 StrutsPrepareAndExecuteFilter 2). StrutsPrepareAndExecuteFilter 詢問 ActionMapper: 該請求是否是一個 Struts2 請求(即是否返回一個非空的 ActionMapping 對象) 3). 若 ActionMapper 認為該請求是一個 Struts2 請求,則 StrutsPrepareAndExecuteFilter 把請求的處理交給 ActionProxy
Struts2文件上傳完美解決中文亂碼問題工具/原料Struts2.0以上步驟/方法今天主要分享開源框架Struts2文件上傳實例過程,并且筆者將帶著大家解決出現的一系列亂碼問題,本文章中的重要部分將用特殊顏色標識,斜體表示不確定內容。筆者建議讀者先快速閱讀一遍本文,下載應具備的工具,再動手操作。或許寫一遍比看十遍的功效更為明顯。
Struts2驗證框架validation.xml常用的驗證規則
?知識點:配置fileUpload攔截器時,可為其指定2個參數:allowedTypes:該參數指定允許上傳的文件類型,多文件之間用英文(,)隔開;maximumSize:該參數指定允許上傳的文件大小,單位是字節;通過配置fileUpload攔截器,可以輕松的實現文件過濾,當文件過濾失敗后,系統自動轉入input邏輯視圖。因此必須為該Action配置名為input的邏輯視圖,除此之外,還必須顯示的為該Action配置defaultStack的攔截器引用;
國際化也叫I18N,是Internationalization的簡稱。Struts2國際化是建立在Java國際化基礎上,只是Struts2框架對Java國際化進行了進一步封裝,從而簡化了應用程序的國際化。
在如Web/客戶端項目中,通常需要將數據轉換為具有某種格式的字符串進行展示,因此上節我們學習的數據類型轉換系統核心作用不是完成這個需求,因此Spring3引入了格式化轉換器(Formatter SPI)和格式化服務API(Formatting Conversion Service)從而支持這種需求。在Spring中它和PropertyEditor功能類似
簡介:Django是一個的,由寫成。采用了的,于7月在下發布。開放源代碼Web應用框架Python MVC軟件設計模式2005年BSD許可證Django的主要目標是使得開發復雜的、數據庫驅動的網站變得簡單。Django注重組件的重用性和“可插拔性”,和(Don't Repeat Yourself)。在Django中被普遍使用,甚至包括配置文件和數據模型。敏捷開發DRY法則Python核心Django框架的核心包括:一個面向對象的映射器,用作數據模型(以Python的形式定義)和關聯性間的媒介;
什么是自定義Result所謂自定義Result,就是由我們自行開發的Result,而不是使用由Struts2預先定義好的Result。 在實際開發中,需要自定義Result的機率并不大,因為常見的各種頁面展示技術,Struts2都已經預定義好相應的Result了,無需我們自行開發。如果我們要自定義Result,要么就是包裝一種新的頁面展示技術,要不干脆就是我們自行開發的頁面展示技術,出現這些情況的可能性很低。
數據來源在helloworld示例里面,在運行Action的execute方法的時候,你會神奇般的發現,Action的屬性是有值的,而這正是Action進行請求處理所需要的數據。那么,這些數據從何而來呢? 很明顯,這些數據就是你在登錄頁面填寫的數據,換句話說,這些數據來源于用戶請求對象,也就是request對象。? 可是,Struts2怎么知道,頁面上的值如何和Action的屬性進行對應呢?
Struts2之使用通配符5.4??使用通配符5.4.1??使用通配符前面學過,可以在定義action元素的name屬性的時候使用通配符,使這個action元素不僅僅可以匹配一個URL,還可以匹配一類URL。而action的class屬性和method屬性能使用通配符的值。
在Action中execute方法的方法簽名為public String execute() throws Exception,這樣,Action可以拋出任何Exception,那么,Exception拋給誰呢?
在實際開發當中,常常需要在Action執行完畢后,而Result還沒有開始執行的時候,做一些功能處理,比如異常處理,那么該怎么做呢? 這就需要使用PreResultListener了。看名字就知道,這是一個“Listener”,也就是一個監聽器,用來執行事件監聽的。那么它監聽的到底是什么事件呢?
package 元素可以把邏輯上相關的一組Action、Result、Intercepter等元素封裝起來,形成一個獨立的模塊,package可以繼承其他的package,也可以作為父包被其他的package繼承
Java代碼:因為用的時候數據是從數據庫中取出來的,屬性名稱得改JS代碼:jsp代碼:這是一個二級聯動,第一個select中數據時action中直接request的,用xml的也是一樣的,這個不用管,主要的是根據第一個select中的value動態加載第二個select中的數據Struts.xml
Struts2自定義驗證器10.5??自定義驗證器10.5.1概述雖然Struts2的內建驗證器可以完成絕大多數的驗證需求,但是,有的時候還是需要個性化定制一些自定義的驗證器。
驗證器類型可以把驗證器類型分為兩種:字段驗證器和動作驗證器。其中,字段驗證器就像前面演示的那樣,只驗證提交的表單內的單個字段;而動作驗證器一般驗證提交的表單內的多個字段的關系,比如,錄入產品信息的時候,產品的進價不能高于售價。
簽8.2??數據標簽數據標簽更關注如何從值棧上取值或者向值棧賦值。8.2.1property標簽1:功能:用來輸出OGNL表達式的值。2:屬性? ?property標簽的主要屬性:value:用來獲取值的OGNL表達式,如果value屬性值沒有指定,那么將會被設定為top,也就是返回位于值棧最頂端的對象。default:如果按照value屬性指定的OGNL求值后返回的是空值.
概述Struts2的驗證框架已經為我們建立了足夠多的內建驗證器,以滿足不同的驗證要求,接下來就來逐一學習這些內建的驗證器。?
struts2控制標簽8.3??控制標簽控制標簽關注程序的運行流程,比如用if/else來進行分支控制,用iterator來進行循環控制。接下來就來學習Struts2的控制標簽。