迅猛 Java Web 开发框架 JessMA v3.4.1

MyBatis 1

    JessMA
是职能完备的高性能 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
    ▪ 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 应用程序看重关系

MyBatis 3

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


JessMA 3.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 对象的程序代码


JessMA 3.3.1
更新:

1、增强国际化功能

1) 匡助设置应用程序器默许 Locale 和默许Bundle
    A) 即使不安顿器默许 Locale 则动用系统原本的默许 Locale
    B) 假诺不安插默许 Bundle,则默认 Bundle 为
‘res.application-message’

  •         (参考:上边的 MVC 配置文件条目)
            <!–
             
      default-locale:应用程序默许语言选用(默许:与近期操作系统一致)
                default-bundle:应用程序默认Bundle(默许:res.application-message)
            –>
    MyBatis,        <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   :基于 库克ie
的国际化拦截器
    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、其余更新

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 文件替换  汤姆cat-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>


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、**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 自定义事务接口

    (示例)
    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();
            }});
    }

4、扩展 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>

网站地图xml地图