JSON插件提供了一種名為json的ResultType,一旦為某個Action指定了一個類型為json的Result,則該Result無需映射到任何視圖資源。將下載到的jsonplugin-0.7.jar文件復制到Web應用的WEB-INF路徑下,即可完成JSON插件的安裝。
早在我剛學Struts2之初的時候,就想寫一篇文章來闡述Struts2如何返回JSON數據的原理和具體應用了,但苦于一直忙于工作難以抽身,漸漸的也淡忘了此事。直到前兩天有同事在工作中遇到這個問題,來找我詢問,我又細細地給他講了一遍之后,才覺得無論如何要抽一個小時的時間來寫這篇文章,從頭到尾將Struts2與JSON的關系說清楚。
Struts2是在WebWork2基礎發展而來的。和struts1一樣, Struts2也屬于MVC框架。不過有一點大家需要注意的是:盡管Struts2和struts1在名字上的差別不是很大,但Struts2和struts1在代碼編寫風格上幾乎是不一樣的。那么既然有了struts1,為何還要推出struts2。
本文由淺入深介紹Struts2的文件上傳及下載.Struts2上傳要用到commons-fileupload包和commons-io包,注意導入。
從struts2.1開始,struts2不再推薦使用Codebehind作為零配置插件,而是改為使用Convention插件來支持零配置,和Codebehind相比,Convention插件更徹底,該插件完全拋棄配置信息,不僅不需要是使用struts.xml文件進行配置,甚至不需要使用Annotation進行配置,而是由struts2根據約定自動配置。 如何使用Convention
Struts提供了一個過濾器調度器ActionServlet作為控制器,程序員不必自行用servlet編寫一個。<br> Struts使用了一個基于XML的配置文件來匹配URI和動作。因為XML文檔是文本文件,所以對應用程序的許多改動都用不著重新編譯有關代碼即可生效。 對動作類進行實例化和提取用戶輸入去填充有關動作屬性的工作都由Struts負責。而不用servlet一個個去取前臺參數。<br> Struts可以在后臺對用戶輸入做一些基本的合法性驗證,并在遇到不合法的輸入時自動地把用戶重定向到相關的輸入表單。
Extjs2.2登陸(struts2+json)方法
Struts2 入門
Struts的第一個版本是2001年5月分發布的,它的最初設想是通過結合JSP和Servlet,使Web應用的視圖和業務/應用邏輯得以清晰地分離開來。自從第一版發布以來,Struts實際上已成為業界公認的Web應用標準。
Struts2標簽
Struts 2里面開始使用convention-plugin 實現零配置,將所有的配置文件刪除,用約定大于配置的方法來實現URL的跳轉。Struts規定了一套默認的約定,只要遵守這些約定,就可以實現無需配置文件的URL跳轉。
OGNL就是對象圖像導航語言( Object Graphic Navigation Language )英文全程的縮寫,是一個開源的項目,struts2選擇此表達式為默認的表達式語言。 OGNL表達式也其他的表達式相比有自己的特性
攔截器(Interceptor)是動態攔截Action調用的對象,類似于Servlet中的過濾器。在執行Action的業務邏輯處理方法(execute())之前,Struts2會首先執行在struts.xml中引用的攔截器。<br> 攔截器是struts2的一個重要特性。Struts2框架的大多數核心功能都是通過攔截器來實現的,像避免表單重復提交、類型轉換、對象組裝、驗證、文件上傳等,都是在攔截器的幫助下實現的。攔截器之所以稱為“攔截器”,是因為它可以在Action執行之前和執行之后攔截調用。
Struts作為MVC 2的Web框架,自推出以來不斷受到開發者的追捧,得到用廣泛的應用。作為最成功的Web框架,Struts自然擁有眾多的優點: MVC 2模型的使用 功能齊全的標志庫(Tag Library) 開放源代碼
MVC是Model-View-Controller的簡稱,即模型-視圖-控制器。MVC是Xerox PARC在20世紀80年代為編程語言Smalltalk-80發明的一種軟件設計模式,至今已被廣泛使用。 <br> MVC把應用程序分成3個核心模塊:模型(Model)、視圖(View)和控制器(Controller),它們分別擔當不同的任務。如下圖所示顯示了這幾個模塊各自的功能及它們的相互關系。
下載完成struts2.1.8 完成jdk + eclipse + tomcat環境配置 下載struts2 學習資料
第五章類型轉換和OGNL Chapter回顧與作業點評棧的特點有哪些?順序棧和鏈棧有什么不同?Action和ValueStack的關系是什么?ValueStack類push()方法的作用是什么?Chapter預習檢查為什么要進行類型轉換?OGNL和EL有什么異同?OGNL中訪問根元素和非根元素有什么區別?
Struts2應用第四章回顧與作業點評Struts2執行流程是什么?Result結果類型有哪些,存在什么區別?Struts2中自定義攔截器有哪些方式?
Struts2深入第三章回顧與作業點評Struts2中開發一個Action有幾種方法?package元素與Java中的包有什么異同之處?Result結果類型有哪些?有什么區別?預習檢查Struts2中為什么需要攔截器?攔截器和攔截器棧有什么異同?自定義攔截器有哪些方式?
Struts2配置詳解第二章回顧與作業點評使用Struts2開發程序的基本步驟是什么?Struts2中如何獲取Servlet的session對象?Struts2表單標簽和普通HTML表單標簽有什么不同之處?預習檢查Struts2Result元素的作用是什么?Struts2中開發一個Action有幾種方法?Struts2中如何解決中文亂碼問題?