OGNL概述OGNL是對象圖導航語言Object-Graph Navigation Language的縮寫,它是一種功能強大的表達式語言(Expression Language,簡稱為EL),通過它簡單一致的表達式語法,可以存取對象的屬性,調用對象的方法,遍歷整個對象的結構圖,實現字段類型轉化等功能。它使用相同的表達式去存取對象的屬性。
雖然內建類型轉換器能滿足絕大多數的需求,但是,有的時候還是需要使用自定義類型轉換器來實現特定的需求。還是用前面的長方形來說明,如果用兩個文本框分別輸入長方形的高和寬,整個類型裝換都沒有問題,它可以工作的很好。
概述在開發基于Web的應用的時候,經常會碰到需要實現文件上傳、下載的功能,比如編輯某個商品,需要給它上傳一個圖片等等。不使用Struts2的話,可以有很多種方式來實現文件上傳,比如使用Apache的Common-FileUpload等。但是這些傳統的方式,實現起來非常麻煩,需要寫很多代碼來進行控制。現在使用Struts2來實現文件上傳的功能,會更加簡單和方便,事實上,Struts2的文件上傳功能,默認就是基于Common-FileUpload來實現的,只不過比直接使用Common-FileUpload來得更簡單。
JSON(JavaScript Object Natation),它是一種輕量級、基于文本、語言無關的數據交換格式,類似于XML,是一種結構化數據串行化的文本格式,常常用于服務器與JavaScript之間的數據交換上。 JSON是從ECMAScript語言標準衍生而來的,定義了一套簡單的格式化規則,JSON可以描述四種簡單的類型,包括字符串、數字、布爾值及和null;還可以描述兩種結構化類型,包括對象和數組。
有了前面的基礎,接下來可以來把Struts2與JFreeChart結合使用了。 先來構建結合開發的環境,很簡單,只有一步工作,把struts2-jfreechart-plugin-2.1.8.1.jar拷入到web工程的lib下就可以了。
Struts2應用的分層體系結構具體例子!!!Struts2的模型驅動(ModelDriven),之前我們使用的都是屬性驅動(PropertyDriven)屬性驅動與模型驅動的比較:屬性驅動靈活,準確;模型驅動不靈活,因為很多時候頁面提交過來的參數并不屬于模型中的屬性,也就是說頁面所提交過來的參數與模型中的屬性并不一致,這是很常見的情況。
Struts2 Action中自定義方法的輸入校驗,對于通過action的method屬性所指定的自定義方法,其對應的自定義輸入校驗方法名是validateMyExecute(假設自定義方法名是myExecute)底層是通過反射實現的。當在Action中指定了自定義的execute方法時,首先會執行自定義的execute方法對應的輸入校驗方法,然后再去執行validate方法,執行完畢后如果出現了任何錯誤都不會再去執行自定義的execute方法,流程轉到input這個名字對應的頁面上。
整個執行流程:表單輸入完數據提交給login.action,流程轉到struts.xml文件中,它里面會有多個action,逐一去匹配;接著流程轉到匹配到的login對應的class:LoginAction,實例化LoginAction對象,將頁面提交過來的信息調用set方法逐個賦值給成員變量,接著自動調用execute方法,這個方法的返回值就是一個String,不能隨便寫,return的結果會跟action的子元素result進行匹配,流程轉到result元素對應的頁面result.jsp,該jsp頁面顯示用戶提交的數據。
進行文件上傳時,必須將表單的method屬性設置為post,將enctype屬性設置為multipart/form-data。:文件上傳組件到apache官網下的頂級項目commons的子項目FileUpload去下載。
Tomcat目錄結構Struts1的運行原理在啟動時通過前端總控制器ActionServlet加載struts-config.xml并進行解析,當用戶在jsp頁面發送請求被struts1的核心控制器ActionServlet接收,ActionServlet在用戶請求時將請求參數放到對應的ActionForm對象中的成員變量中.
Tapestry框架是一個位于javaservlet容器和Tapestry應用程序之間的層。Tapestry不是一個獨立運行的服務器;它是一個servlet的擴展,它運行于servlet容器(例如Tomcat)或包含servlet容器的應用服務器中(如Jboss,Websphere,或者WebLogic).Tapestry應用其實是由一系列頁面組成,而每個頁面是由可以復用的組件構成。
能熟練使用struts2框架中的timer(計時攔截器)、token(防重復提 交攔截器)。 熟練定義攔截器。 熟練 struts2框架中的action方法進行效驗。 數量掌握xml配置方式進行效驗。 攔截器(interceptor)類似于Filer,在執行Action方法前后執行。攔截器是一種AOP(Aspect-Oriented Programming,面向切面的編程)思想的編程方式。它提供一種機制使開發能者對獨立的代碼抽象出來,配置到Action前后執行。
在實際應用中,隨著應用規模的增加,系統中的Action的數量的的增多,需要把action的配置根據表或者業務邏輯進行分類,顯然一個struts.xml配置是不可能滿足應用的需求(即便有的小項目把所有的配置配置在struts.xml一個文件中,可讀性和,邏輯性顯然不很清晰),所以在struts 2中可以將以strtus.xml配置文件分解成多個配置文件,然后再struts.xml文件中包含其他配置文件。
Struts 2.x仍然是一個MVC框架。一般來說,某種軟件的第二個版本都是起源第一個版本,但實際上,Struts 2.x是個特例,它并非起源于Struts 1.x,而是起源于WebWork框架 ------ 另一MVC的框架。因此Struts 2.x與Struts 1.X是沒有直接關系的。<br> WebWork是Apache的另一個MVC框架,發布于2002年3月。WebWork 項目在起時曾參考過Struts 1.x,因為Struts 1.x當時已經是個十分流行的MVC框架(Struts 1.x起源最早,應用最廣的基于MVC框架的Java Web 技術)。WebWork可以說對Struts 1.x進行了換血式的大改裝,從一個新的視覺實現MVC。拋棄了request、response等基于servlet 的API。
1 JSF簡介 2 JSF入門 3 JSF標簽 4 JSF數據驗證和轉換 5 JSF表格 6 JSF與Struts的區別。JSF 的主要優勢之一就是它既是 Java Web 用戶界面標準又是嚴格遵循模型-視圖-控制器 (MVC) 設計模式的框架。所有與應用程序的用戶交互均由一個前端“Faces Servlet(控制器)來處理。
RichFaces 是一個具有 Ajax 和 JSF 特性 的 Web 框架。 JSF 和 Ajax 概念大家一定不陌生,二者結合起來衍生出 A4J(Ajax4JSF)。其目的就是將 Ajax 的功能集成到 JSF 組件中去。后來 JBoss 收購 A4J 后,又將其集成到 RichFaces 中,不但豐富了控件庫和還添加了新功能。 對開發人員來說,只要按照 JSF 的組件規范來組織頁面,免去了書寫或調用龐雜的 JavaScript 代碼或庫,就能達到夢寐以求的 Ajax 效果 ---- 可以只更新局部內容而不用刷新整個頁面,增強了用戶體驗。
本文主要介紹使用注解方式配置的spring mvc,包括數據訪問層的實現.
jstljstl以前在jsp頁面截取字符串時都是用Java表達式,感覺在jsp頁面用多了Java表達式不是很好(那時主要是不知道jstl標簽怎么去截取字符串,所以就只能用Java表達式了)。
CodeIgniter 是一個為用 PHP 編寫網絡應用程序的人員提供的工具包。它的目標是實現讓你比從零開始編寫代碼更快速地開發項目,為此,CI 提供了一套豐富的類庫來滿足通常的任務需求,并且提供了一個簡單的接口和邏輯結構來調用這些庫。CodeIgniter 可以將需要完成的任務代碼量最小化,這樣你就可以把更多的精力放到項目的開發上了。 CodeIgniter 是輕量級的 真正的輕量級。我們的核心系統只需要一些非常小的庫,這與那些需要更多資源的框架完全相反。額外的庫文件只在請求的時候加載,依需求而定,所以核心系統是非常快而且輕的。
本章講述Struts2的工作原理。讀者如果曾經學習過Struts1.x或者有過Struts1.x的開發經驗,那么千萬不要想當然地以為這一章可以跳過。實際上Struts1.x與Struts2并無我們想象的血緣關系。雖然Struts2的開發小組極力保留Struts1.x的習慣,但因為Struts2的核心設計完全改變,從思想到設計到工作流程,都有了很大的不同。