快速 Java Web 开发框架 JessMA v3.3.1 Beta-1 揭橥

MyBatis 1

    JessMA(原名:Portal-Basic)是一套功用齐全的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate、MyBatis 与 JDBC DAO 组件),集成了 Action 拦截、Form / Dao / Spring Bean 装配、国际化、文件上传下载和页面静态化等基础 Web 应用组件,提供高效灵活的纯 Jsp/Servlet API 编程模型,可周全组合 Spring / Guice,支持 Action Convention,能急忙支付传统风格和 RESTful 风格应用程序,文档和示范完善,相当不难学习。

    JessMA 官方网站:http://www.jessma.org
    JessMA 下载地址:http://www.oschina.net/p/portal-basic
    JessMA 在线示例:http://demo.jessma.org
    JessMA 在线 API 文档:http://www.jessma.org/doc

    JessMA 在规划之初就充足强调效益、性能与运用体验。JessMA 主要特征:

    ★ 效能健全:内置稳定火速的 MVC 基础架构和 DAO 框架,辅助 Action 拦截、Form Bean / Dao Bean / Spring Bean 装配和注脚式事务,提供国际化、文件上传下载、缓存和页面静态化等常用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-Basi c并从未对 JSP/Servet API 举办过多封装,开发者仍然使用 JSP/Servet API 开发应用程序,没有过多的抄袭,性能得到保障。 
    ★ 良好的施用体验:JessMA 的设计目的之一是提供可以的付出体验,尽量减弱应用程序开发者的行事,API 的安排性力求简约、完整、明确。同时,JessMA 为利用开发提供了汪洋 Util 工具,用来处理应用程序开发进度中常见会遇上的常备问题,进一步回落应用程序开发者的行事担负。 
    ★ 平缓的学习曲线:学习应用 JessMA 只需控制一定的 Core Java 与 JSP/Servlet 知识,本开发手册会安份守己演讲每个知识点,每个知识点都会构成完整的示范进行描述,知识点之间上下呼应,确保学习者在攻读时温故知新,融会贯通。 
    ★ 完善的技术帮衬:除了提供周详的支付手册和示范代码以外,还提供博客和 QQ 群用于解答使用 JessMA 进度中蒙受的具有问题,也可以访问 JessMA 官方网站刺探更加多音信。

* JessMA 总体架构

MyBatis 2

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
MyBatis,    ▪ org.jessma.dao.hbn
    ▪ org.jessma.dao.jdbc
    ▪ org.jessma.dao.mybatis
    ▪ org.jessma.ext.dao

    ● 公共组件

    公共组件提供多种通用功效支持类(如:字符串处理、类型转换、分页算法、压缩/解压、加解密、邮件发送等),那一个类与框架毫不相关,可在其他应用程序中动用。公共组件在以下包中落到实处:
    ▪ org.jessma.util
    ▪ org.jessma.util.archive
    ▪ org.jessma.util.cache
    ▪ org.jessma.util.http
    ▪ org.jessma.util.mail
    ▪ org.jessma.dao(DAO框架也可由看作为一个针锋相对较大的公家组件)

    ● 扩张插件

    扩充差插件是基于JessMA大旨框架基础上的效率延伸,不是JessMA的不可或缺组件。可由应用程序开发人士根据要求活动定制。JessMA发行包中也自带了部分扩充插件(如:jessma-ext-spring和jessma-ext-rest)。

* JessMA 应用程序看重关系

MyBatis 3

    基础运用框架、MVC框架和DAO框架都凭借于国有组件,其中基础运用框架同时凭借于DAO框架,由此,MVC框架和DAO框架能脱离JessMA单独行使(当然,要附带上集体组件)。例如:可以把MVC框架和DAO框架用于JessMA之外的其余Web项目;也可以把DAO框架用于非Web项目(如:Swing / SWT桌面应用)。


JessMA 3.3.1
(Beta-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、库克(Cook)ie
或浏览器语言采纳的国际化格局
    A) org.jessma.mvc.i18n.URLI18nFilter        :基于 URL
请求参数的国际化拦截器
    B) org.jessma.mvc.i18n.库克(Cook)ieI18nFilter   :基于 Cookie
的国际化拦截器
    C)
org.jessma.mvc.i18n.BrowserI18nFilter:基于浏览器语言选取的国际化拦截器
    D) JessMA 默认基于 Session
达成国际化,但可以通过布置上述拦截器改为对应的兑现形式
    E) 上述拦截器的国际化属性是依照 Request Attribute 的,因而会遮掩
Session 的国际化设置
    F) 上述拦截器可以构成使用,一般顺序为:URL -> Cookie ->
Browser
(例如:上面同时陈设了 URL、库克(Cook)ie 和
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、其余更新/strong>

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) 如若要在 汤姆cat-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
的升迁表达)


JessMA 3.2.3
更新:

1、增加 Guice 支持

1) 扩大  Guice 插件包 jessma-ext-guice-3.2.3.jar 用于整合 Guice
2) Action 通过 @GuiceBean/@GuiceBeans 阐明表明 Guice Bean
3) Action 通过拦截器 com.bruce.ext.guice.GuiceInjectFilter 解析 @GuiceBean/@GuiceBeans 声明并流入 Guice Bean
4) 可以在 Guice Bean 中注入 JessMA DAO 对象,从而能在 Guice 环境下行使 JessMA DAO 子框架
5) 示例工程 MyJessMA 扩展 Guice 整合示例

    (注:平时状态下,应用程序须求成立 GuiceInjectFilter 的子类并改写 configModules() 方法,用于定义 Module 的绑定规则)
    public class MyGuiceInjectFilter extends GuiceInjectFilter
    {
        @Override
        protected Collection<Module> configModules()
        {
            Set<Module> modules = new HashSet<Module>();
            // 到场第多少个 Module
            modules.add(new Module()
            {
                @Override
                public void configure(Binder binder)
                {
                    // 配置绑定规则
                    // ……
                }
            });
            // ……
            // 加入第N个 Module
            modules.add(new Module()
            {
                @Override
                public void configure(Binder binder)
                {
                    // 配置绑定规则
                    // ……
                }
            });
            return modules;
        }
    }

2、Form Bean 援救联级属性注入

1) @FormBean 表明匡助注入联级属性
2) org.jessma.util.BeanHelper 的 createBean(…) / setPropertiesOr菲尔德Values(…) 系列措施支持联级装配 Bean

*    (例如:下面的 Form 对应的 Bean 中,b、x 和 y 为联级 Bean)

    <form>
        <input name=”a” value=”…”>
        <input name=”b.c” value=”…”>
        <input name=”b.d” value=”…”>
        <input name=”x.y.z” value=”…”>
    </form>*

3、规范“嵌套 DAO
方法”调用规则(详情参见:开发手册第 10.6 节)

1) 最外层的
DAO 对象必须由 FacadeProxy 成立
2) 内层的 DAO 对象能够用 new 或 FacadeProxy 等任意形式开创
3) 最外层的 DAO 方法作为一个业务单元,并且不会有嵌套事务
4) 事务属性由最外层的 DAO 方法指定,忽略所有内层 DAO
方法的事体属性

4、别的更新

1) 器重库 “jessma-lib” 中的所有 jar 包更新到新型版本
2) 信赖库 “spring-lib” 中的所有 jar 包更新到最新版本
3) 增加 Guice 依赖库 “guice-lib”
4) 更新支出手册《JessMA Java Web 应用开发框架 (v3.2.3)》

5、应用程序升级表明

1) JessMA 3.2.2 升级到 JessMA 3.2.3:完全匹配,可径直升级
2) Portal-Basic 3.1.1 及更早版本升级到 JessMA 3.2.3:(参考 JessMA 3.2.1 的升级换代表达)


JessMA 3.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’ 中)

    <manager name=”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 支持活动扫描 SQL Mapper 接口

1) 不必在 mybatis.cfg.xml 中配置 ‘mapper’
2) app-config.xml 中布置 MyBatisSessionMgr 时,用第多少个可选参数以正则表明式的格式指定 SQL Mapper 接口所在包

    (例如:SQL Mapper 接口位于 ‘com.bruce.<任意子包>.mapper’ 中)

    <manager name=”mgr-2″ class=”org.jessma.dao.mybatis.MyBatisSessionMgr”>
        <initialize-args>
            <arg></arg>
            <arg></arg>
            <arg>com\.bruce\..+\.mapper</arg>
        </initialize-args>
    </manager>

3、所有 JDBC Session Manager 均打消 ‘isXml’ 配置参数,改为依据安排文件的扩大名自动识别配置文件类型

1) 受影响的 Session Manager:DruidSessionMgr、JdbcSessionMgr、JndiSessionMgr、ProxoolSessionMgr

4、org.jessma.dao.FacadeProxy 扩展方法 executeCustomTransaction(…) 协理实施自定义事务

1) JessMA 的工作是 DAO 层事务,也就是说当外部调用某个 DAO 方法时,该办法作为一个事务单元执行。 但在一部分非同一般景况下或者需求在 DAO 外部执行 瑟维斯(Service)(Service) 层事务(例如:事务必要调用八个 DAO 对象的八个法子), 此时亟待制造一个自定义事务(CustomTransaction),并调用 FacadeProxy 的 executeCustomTransaction(…) 来举行该自定义事务。
2) 伸张自定义事务相关接口:
    A) CustomTransaction  : 自定义事务基接口
    B) JdbcTransaction     : JDBC 自定义事务接口
    C) MyBatisTransaction  : MyBatis自定义事务接口
    D) HibernateTransaction : Hibernate 自定义事务接口

    (示例)
    public static void serviceMethod()
    {
        // 获取 SessionMgr
        HibernateSessionMgr mgr = (HibernateSessionMgr)AppConfig.getSessionManager(“mgr-1”);
        // 执行自定义事务
        FacadeProxy.executeCustomTransaction(mgr, new HibernateTransaction(){
        // 完成自定义事务方法
            @Override
            public void execute(HibernateSessionMgr mgr) throws DAOException
            {
                // 创造 dao1 (能够采纳 FacadeProxy 创造 DAO 对象)
                MyDaoA dao1 = new MyDaoA(mgr);
               //
创设 dao2 (能够选拔 ‘new MyDaoB(mgr)’ 成立 DAO
对象)
                MyDaoB dao2 =
Facade.create(MyDaoB.class, mgr);

                // 执行 DAO 方法
                dao1.methodXxx();
                dao2.methodYyy();
                dao1.methodZzz();
                dao2.methodNnn();
            }});
    }

5、扩展 mvc-confing.xml 中 <result-path-aliases> 别名配置利用范围

1) 协助在 <result-path-aliases> 配置中引用前面定义的别名

    (示例:上边配置中 ${index} 的实际路径为 ‘/jsp/test/index.jsp’)
    <result-path-aliases>
        <alias name=”jsp_base” path=”/jsp/test”/>
        <alias name=”index” path=”${jsp_base}/index.jsp”/>
    </result-path-aliases>

2) 允许在 <action-convention> 的 ‘dispatch-file-path’ 和 ‘dispatch-file-path’ 配置中动用别名

    (示例:上边配置中 ‘dispatch-file-path’ 的实际上路径为 ‘/jsp’)
    <action-convention
        dispatch-file-path=”${ac_path}”
        <!– 其余配置(略)… –>
    />
    <result-path-aliases>
        <alias name=”ac_path” path=”/jsp”/>
    </result-path-aliases>

6、其它更新

1) 修改 org.jessma.util.PackageHelper,参与包扫描相关办法
2) 爱抚库 “jessma-lib” 中的所有 jar 包更新到最新版本
3) 更新支入手册《JessMA 高效 Java MVC & REST 开发框架 (v3.2.2)》
4) 扩充一个 JessMA 项目模板工程:HelloJessMA

7、应用程序升级表达

1) JessMA 3.2.1 升级到 JessMA 3.2.2:完全匹配,可直接进步
2) Portal-Basic 3.1.1 及更早版本升级到 JessMA 3.2.2:(参考 JessMA 3.2.1 的升官表达)

8、JessMA 3.2.1 历史更新《JessMA 3.2.1 Release》

网站地图xml地图