国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

高效 Java Web 開發框架 JessMA v3.4.1 正式發布

2019-11-14 21:04:42
字體:
來源:轉載
供稿:網友
高效 java Web 開發框架 JessMA v3.4.1 正式發布

JessMA 是功能完備的高性能Full-StackWeb應用開發框架,內置可擴展的MVCWeb基礎架構和DAO數據庫訪問組件(內部已提供了Hibernate、MyBatis與JDBCDAO組件),集成了Action攔截、Form/Dao/SPRingBean裝配、國際化、文件上傳下載和頁面靜態化等基礎Web應用組件,提供高效靈活的純jsp/ServletAPI編程模型,可完美整合Spring/Guice,支持ActionConvention,能快速開發傳統風格和RESTful風格應用程序,文檔和示例完善,非常容易學習。

JessMA官方網站:http://www.jessma.orgJessMA下載地址:http://www.oschina.net/p/portal-basicJessMA在線示例:http://demo.jessma.orgJessMA在線API文檔:http://www.jessma.org/doc

JessMA在設計之初就充分注重功能、性能與使用體驗。JessMA主要特點:

★功能全面:內置穩定高效的MVC基礎架構和DAO框架,支持Action攔截、FormBean/DaoBean/SpringBean裝配和聲明式事務,提供國際化、文件上傳下載、緩存和頁面靜態化等常用Web組件,能滿足絕大部分Web應用的需要。★高度擴展:JessMA通過的plug-in機制可以靈活擴展,JessMA發布包中自帶的jessma-ext-rest和jessma-ext-spring均以插件的形式提供,用戶可根據需要加載或卸載這些插件。應用程序開發者也可以根據實際需要編寫自定義插件來擴展JessMA。★強大的整合能力:JessMA是一個Full-Stack框架,同時也是一個開放式框架,可以以非常簡單的方式整合第三方組件。本開發手冊會詳細闡述如何在JessMA中整合Freemarker、Velocity、Urlrewrite、EHCache-Web、Spring、Hibernate和Mybaits等常用框架和組件。★高性能:性能要求是JessMA的硬性指標,從每個模塊的設計到每行代碼的實現都力求簡潔高效。另外,Portal-Basic并沒有對JSP/ServetAPI進行過多封裝,開發者仍然使用JSP/ServetAPI開發應用程序,沒有過多的迂回,性能得到保證。★優秀的使用體驗:JessMA的設計目標之一是提供良好的開發體驗,盡量減少應用程序開發者的工作,API的設計力求簡單、完整、明確。同時,JessMA為應用開發提供了大量Util工具,用來處理應用程序開發過程中通常會遇到的一般性問題,進一步減少應用程序開發者的工作負擔。★平緩的學習曲線:學習使用JessMA只需掌握一定的CoreJava與JSP/Servlet知識,本開發手冊會循序漸進闡述每個知識點,每個知識點都會結合完整的示例進行講述,知識點之間前后呼應,確保學習者在學習時溫故知新,融會貫通。★完善的技術支持:除了提供完善的開發手冊和示例代碼以外,還提供博客和QQ群用于解答使用JessMA過程中碰到的所有問題,也可以訪問JessMA官方網站了解更多資訊。

*JessMA總體架構

JessMA主要包括以下5個部分:

●基礎應用框架

基礎應用框架加載應用程序配置文件(默認:app-config.xml),監聽應用程序的生命周期事件,并向上層應用發送應用程序啟動和關閉通知,應用程序可以處理這些通知進行額外的初始化或清理工作。基礎應用框架在org.jessma.app包中是實現。

●MVC框架

MVC框架加載MVC配置文件(默認:mvc-config.xml),通過前端控制器ActionDispatcher接收和解析所有的客戶HTTP請求,然后交由相應的Action進行處理,最后生成相應的視圖返回給客戶端。MVC框架在org.jessma.mvc包中實現。

●DAO框架

DAO框架封裝了所有的數據庫訪問操作,內置JDBC、Hibernate和MyBaits數據庫訪問組件以及Druid、Proxool、JNDI等連接池。DAO框架是可擴展的,用戶可以通過擴展org.jessma.dao.AbstractFacade和org.jessma.dao.AbstractsessionMgr實現自己的數據庫訪問組件。DAO框架在以下包中實現: ?org.jessma.dao ?org.jessma.dao.hbn ?org.jessma.dao.jdbc ?org.jessma.dao.mybatis

●公共組件

公共組件提供多種通用功能幫助類(如:字符串處理、類型轉換、分頁算法、壓縮/解壓、加解密、郵件發送等),這些類與框架無關,可在任何應用程序中使用。公共組件在以下包中實現: ?org.jessma.util ?org.jessma.util.archive ?org.jessma.util.cache ?org.jessma.util.http ?org.jessma.util.mail

●擴展插件

擴展差插件是基于JessMA核心框架基礎上的功能延伸,不是JessMA的必要組件。可由應用程序開發人員根據需要自行定制。JessMA發行包中也自帶了一些擴展插件(如:jessma-ext-spring和jessma-ext-rest)。

*JessMA應用程序依賴關系

基礎應用框架、MVC框架和DAO框架都依賴于公共組件,其中基礎應用框架同時依賴于DAO框架,因此,MVC框架和DAO框架能脫離JessMA單獨使用(當然,要附帶上公共組件)。例如:可以把MVC框架和DAO框架用于JessMA之外的其它Web項目;也可以把DAO框架用于非Web項目(如:Swing/SWT桌面應用)。


JessMA3.4.1 更新:

1、升級 Log4J 到 2.x 版本1) Log4J 默認配置文件為 log4j2.xml 2) 默認 Logger 對象獲取方式:org.jessma.util.LogUtil.getDefaultLogger(...) 3) 其它 Logger 對象獲取方式:org.apache.logging.log4j.LogManager.getLogger(...)

2、其它更新1) 依賴庫 “jessma-lib” 中的所有 jar 包更新到最新版本 2) 依賴庫 “spring-lib” 中的所有 jar 包更新到最新版本 3) 更新開發手冊《JessMA Java Web 應用開發框架 (v3.4.1)》

3、應用程序升級說明1) JessMA 3.3.x 升級到 JessMA 3.4.1 需要做以下工作 A) 把原來 log4j-1.x 的依賴包升級到 log4j-2.x(參考:“jessma-lib”) B) 修改獲取 Logger 對象的程序代碼


JessMA3.3.1 更新:

1、增強國際化功能

1) 支持設置應用程序器默認 Locale 和默認 Bundle A) 如果不配置器默認 Locale 則使用系統原來的默認 Locale B) 如果不配置默認 Bundle,則默認 Bundle 為 'res.application-message' (參考:下面的 MVC 配置文件條目) <!-- default-locale:應用程序默認語言選項(默認:與當前操作系統一致) default-bundle:應用程序默認 Bundle(默認:res.application-message) --> <i18n default-locale="en_US" default-bundle="com.bruce.res.application-message" />2) 支持基于 URL、Cookie 或瀏覽器語言選項的國際化方式 A) org.jessma.mvc.i18n.URLI18nFilter :基于 URL 請求參數的國際化攔截器 B) org.jessma.mvc.i18n.CookieI18nFilter :基于 Cookie 的國際化攔截器 C) org.jessma.mvc.i18n.BrowserI18nFilter:基于瀏覽器語言選項的國際化攔截器 D) JessMA 默認基于 Session 實現國際化,但可以通過配置上述攔截器改為相應的實現方式 E) 上述攔截器的國際化屬性是基于 Request Attribute 的,因此會屏蔽 Session 的國際化設置 F) 上述攔截器可以組合使用,一般順序為:URL -> Cookie -> Browser (例如:下面同時配置了 URL、Cookie 和 Browser 三個國際化攔截器) <action-filters> <!-- 優先檢查客戶請求中是否帶有名稱為 '__locale' 的請求參數 --> <filter class="org.jessma.mvc.i18n.URLI18nFilter"/> <!-- 然后檢查請求是否帶有名稱為 '__locale' 的 Cookie --> <filter class="org.jessma.mvc.i18n.CookieI18nFilter"/> <!-- 最后根據客戶端瀏覽器的語言選項設置當前請求的語言屬性 --> <filter class="org.jessma.mvc.i18n.BrowserI18nFilter"/> </action-filters>

2、支持 JSR 303 Bean Validation 機制

1) 如果開啟了Bean Validation 機制,應用程序可對由 @FormBean 注解的 Form Bean 執行自動驗證 2) @FormBean 注解增加 'validate()' 和 'groups()' 兩個屬性,分別指示是否對 Form Bean 執行自動驗證,以及自動驗證的驗證組 3) 如果自動驗證成功則轉入 Action 的 validate() 方法繼續執行,否則會把錯誤信息寫入 Action 的 errors 集合并跳轉到 Action 的 INPUT 視圖 4) 應用程序還可以隨時調用 ActionSupport 的 validateBean() / validateBeanAndAddErrors() 方法驗證其它任何 Bean 5) 增加錯誤信息輸出標簽 <p:err/>,支持多種方式和格式展示錯誤信息(參考:<p:err/> 及其實現類 org.jessma.tag.Error 相關注釋) (參考:下面的 MVC 配置文件條目) <!-- enable :是否開啟 Bean Validation 機制(默認:開啟) bundle:驗證文本消息的 Bundle(默認:res.validation-message) validator:驗證器類(默認:org.jessma.mvc.validation.HibernateBeanValidator) --> <bean-validation enable="true" bundle="com.bruce.res.validation-message" validator="org.jessma.mvc.validation.HibernateBeanValidator" />

3、其它更新

1) org.jessma.ext.dao.* 包中的類移到 org.jessma.dao 2) 應用程序默認 Bundle 由 “res.message-resource” 改為 “res.application-message” 3) 修改 MVC 主/從配置文件、應用程序配置文件以及 REST 配置文件的 Sechema 引用(參考 MyJessMA 測試工程) 4) 更新開發手冊《JessMA Java Web 應用開發框架 (v3.3.1)》 5) 整理依賴庫 “jessma-lib”,刪除多余的 jar 包4)事務屬性由最外層的 DAO 方法指定,忽略所有內層 DAO 方法的事務屬性

4、應用程序升級說明

1) JessMA 3.2.x 升級到 JessMA 3.3.1 需要做以下工作: A) 把原來對 org.jessma.ext.dao 包的引用改為 org.jessma.dao B) 把資源文件 “res.message-resource” 改為 “res.application-message” 或在 <i18n/> 配置項中指定 C) 如有必要,修改 MVC 主從配置文件、應用程序配置文件以及 REST 配置文件的 Sechema D) 如果要在 Tomcat-6.0 中開啟 Bean Validation 機制,需要把 “tomcat_7_to_6_lib” 文件夾下的 3 個 jar 文件替換 Tomcat-6.0 的 lib 目錄下的同名文件 2) Portal-Basic 3.1.1 及更早版本升級到 JessMA 3.3.1:(參考 JessMA 3.2.1 的升級說明)

JessMA3.2.3 更新:

1、增加Guice支持

1)增加Guice插件包jessma-ext-guice-3.2.3.jar用于整合Guice 2)Action通過@GuiceBean/@GuiceBeans注解聲明GuiceBean 3)Action通過攔截器com.bruce.ext.guice.GuiceInjectFilter解析@GuiceBean/@GuiceBeans注解并注入GuiceBean 4)可以在GuiceBean中注入JessMADAO對象,從而能在Guice環境下使用JessMADAO子框架 5)示例工程MyJessMA增加Guice整合示例(注:通常情況下,應用程序需要創建GuiceInjectFilter的子類并改寫configModules()方法,用于定義Module的綁定規則)publicclassMyGuiceInjectFilterextendsGuiceInjectFilter{@OverrideprotectedCollection<Module>configModules(){Set<Module>modules=newHashSet<Module>();//加入第一個Modulemodules.add(newModule(){@Overridepublicvoidconfigure(Binderbinder){//配置綁定規則//......}});//......//加入第N個Modulemodules.add(newModule(){@Overridepublicvoidconfigure(Binderbinder){//配置綁定規則//......}});returnmodules;}}

2、FormBean支持聯級屬性注入

1)@FormBean注解支持注入聯級屬性2)org.jessma.util.BeanHelper的createBean(...)/setPropertiesOrFieldValues(...)系列方法支持聯級裝配Bean

(例如:下面的Form對應的Bean中,b、x和y為聯級Bean)<form><inputname="a"value="..."><inputname="b.c"value="..."><inputname="b.d"value="..."><inputname="x.y.z"value="..."></form>


JessMA3.2.2更新:

(注:本次更新的主要內容是升級DAO組件)

1、org.jessma.dao.hbn.HibernateSessionMgr支持自動掃描實體對象

1)實體對象用@Entity注解取代*.hbm.xml映射文件(同時也不必在hibernate.cfg.xml中配置‘mapping’)2)app-config.xml中配置HibernateSessionMgr時,用第二個可選參數以正則表達式的格式指定實體對象所在包(例如:實體對象位于‘com.bruce.<任意子包>.model’中)<managername="mgr-1"class="org.jessma.dao.hbn.HibernateSessionMgr"><initialize-args><arg></arg><arg>com/.bruce/..+/.model</arg></initialize-args></manager>

2、org.jessma.dao.mybatis.MyBatisSessionMgr支持自動掃描SQLMapper接口

1)不必在mybatis.cfg.xml中配置‘mapper’2)app-config.xml中配置MyBatisSessionMgr時,用第三個可選參數以正則表達式的格式指定SQLMapper接口所在包(例如:SQLMapper接口位于‘com.bruce.<任意子包>.mapper’中)<managername="mgr-2"class="org.jessma.dao.mybatis.MyBatisSessionMgr"><initialize-args><arg></arg><arg></arg><arg>com/.bruce/..+/.mapper</arg></initialize-args></manager>

3、org.jessma.dao.FacadeProxy增加方法executeCustomTransaction(...)支持執行自定義事務

1)JessMA的事務是DAO層事務,也就是說當外部調用某個DAO方法時,該方法作為一個事務單元執行。但在一些特殊情形下可能需要在DAO外部執行Service層事務(例如:事務需要調用多個DAO對象的多個方法),此時需要創建一個自定義事務(CustomTransaction),并調用FacadeProxy的executeCustomTransaction(...)來執行該自定義事務。2)增加自定義事務相關接口:A)CustomTransaction  :自定義事務基接口B)JdbcTransaction   :JDBC自定義事務接口C)MyBatisTransaction  :MyBatis自定義事務接口D)HibernateTransaction :Hibernate自定義事務接口(示例)publicstaticvoidserviceMethod(){//獲取SessionMgrHibernateSessionMgrmgr=(HibernateSessionMgr)AppConfig.getSessionManager("mgr-1");//執行自定義事務FacadeProxy.executeCustomTransaction(mgr,newHibernateTransaction(){//實現自定義事務方法@Overridepublicvoidexecute(HibernateSessionMgrmgr)throwsDAOException{//創建dao1(可以使用FacadeProxy創建DAO對象)MyDaoAdao1=newMyDaoA(mgr);// 創建 dao2 (可以使用 ‘new MyDaoB(mgr)’ 創建 DAO 對象)MyDaoB dao2 = Facade.create(MyDaoB.class, mgr);//執行DAO方法dao1.methodXxx();dao2.methodYyy();dao1.methodZzz();dao2.methodNnn();}});}

4、擴大mvc-confing.xml中<result-path-aliases>別名配置應用范圍

1)支持在<result-path-aliases>配置中引用前面定義的別名(示例:下面配置中${index}的實際路徑為'/jsp/test/index.jsp')<result-path-aliases><aliasname="jsp_base"path="/jsp/test"/><aliasname="index"path="${jsp_base}/index.jsp"/></result-path-aliases>

2)允許在<action-convention>的'dispatch-file-path'和'dispatch-file-path'配置中使用別名

(示例:下面配置中'dispatch-file-path'的實際路徑為'/jsp') <action-conventiondispatch-file-path="${ac_path}"<!--其它配置(略)...-->/><result-path-aliases><aliasname="ac_path"path="/jsp"/></result-path-aliases>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 雷州市| 建昌县| 滦平县| 黄石市| 甘肃省| 东台市| 丁青县| 巴彦淖尔市| 宁武县| 肇庆市| 天门市| 益阳市| 青龙| 龙门县| 蓬溪县| 乌兰浩特市| 临澧县| 南召县| 齐河县| 五大连池市| 商都县| 绵阳市| 敦煌市| 东海县| 全州县| 陇川县| 灌阳县| 周口市| 兰溪市| 太湖县| 谢通门县| 岳普湖县| 通榆县| 万州区| 宁城县| 泽州县| 靖江市| 姚安县| 昭平县| 南岸区| 贵溪市|