很快 Java Web 开发框架 JessMA v3.5.1

图片 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
    OSChina
项目主页:http://www.oschina.net/p/portal-basic
    Github
下载地址:https://github.com/ldcsaa/JessMA
   
在线示例:http://demo.jessma.org
    在线 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 总体架构

图片 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.http
    ▪ org.jessma.util.mail

    ● 扩展插件

    扩展差插件是冲JessMA核心框架基础及之效果延伸,不是JessMA的必不可少组件。可由于应用程序开发人员因需要活动定制。JessMA发行包中为起带了一部分恢弘插件(如:jessma-ext-spring和jessma-ext-rest)。

* JessMA 应用程序依赖关系

图片 3

    基础运用框架、MVC框架和DAO框架都负让国有组件,其中基础运用框架而凭借让DAO框架,因此,MVC框架和DAO框架能脱JessMA单独行使(当然,要附带上共用组件)。例如:可以管MVC框架和DAO框架用于JessMA之外的其他Web项目;也堪把DAO框架用于非Web项目(如:Swing / SWT桌面应用)。


JessMA 3.5.1
更新:

1、JessMA 3.5.1 使用 Maven 进行构建与发表管理

1) JessMA core

<dependency>
    <groupId>org.jessma</groupId>
    <artifactId>jessma-core</artifactId>
    <version>3.5.1</version>
</dependency>

2) JessMA RESTful 扩展

<dependency>
    <groupId>org.jessma</groupId>
    <artifactId>jessma-ext-rest</artifactId>
    <version>3.5.1</version>
</dependency>

3) JessMA Guice 扩展

<dependency>
    <groupId>org.jessma</groupId>
    <artifactId>jessma-ext-guice</artifactId>
    <version>3.5.1</version>
</dependency>

4) JessMA Spring 扩展

<dependency>
    <groupId>org.jessma</groupId>
    <artifactId>jessma-ext-spring</artifactId>
    <version>3.5.1</version>
</dependency>

2、日志组件使用 slf4j 替代  Log4j
1) JessMA Logger
对象获得方式:org.jessma.util.LogUtil.getJessMALogger()
2) 其它 Logger 对象获得方式:org.jessma.util.LogUtil.getLogger()

3、其它更新
1) 依赖包更新至新型版本
2) 增加 Maven 示例工程 jessma-sample-hello 和 jessma-sample-set
3) 更新支出手册《JessMA Java Web 应用开发框架 (v3.5.1)》


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)》


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)
            –>
            <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 方法的事务属性

 


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(…) / setPropertiesOrFieldValues(…) 系列措施支持联级装配 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地图