基于多框架的J2EE快速开发方法

  J2EE Fast Developing Mode Based on Multi-Framework

ZHANG Hao, LIU Hong-Jun, KANG Bo

( Institute of Information Technology, Jiujiang University , Jiujiang , China )

 

Abstract: Focusing on enhancing efficiency of development of Web application system , this article take the teaching simulating system of submitting country's tax as the example, proposed method based on many kinds of outstandingly opens  source frameworks to develop  J2EE application system fast . Separately introducing frameworks by Web designing layers like Hibernate, Spring, JSF and Ajax4JSF, as well as process of applying its synthesis and the teaching simulating system of submitting country's tax. From several aspects of data accessing, page jumping, container management and code generating introducing the core thought of fast development.

Keywords: j2EE; Hibernate; Spring; Fast Develop

 


1         引言

软件系统发展到今天,涉及的知识和技术太多。在某些方面使用成熟的框架,避免重复一些基础工作。而且框架一般是成熟、稳健的,可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。开源框架给我们带来成功经验的同时,也降低了开发成本。

本文针对J2EE领域,对应于信息系统分层结构的多个优秀开发框架的原理,和实际应用作详细阐述,并提出Web应用系统快速开发方法。

2         分层的软件和框架介绍

随着Internet Web 技术的迅速发展、深入研究,基于Web 的分层模型设计在软件设计中进入了快速发展、应用阶段。分层模型是软件设计时用得最多的技术之一,分层模型的目标和优点是松散耦合。分层模型中最困难也最重要的是决定如何分层,每层的职责是什么。以下从数据库、ORMIOC容器、组件框架和Ajax分别介绍各层对应的优秀框架和软件。

2.1          数据库

PostgreSOL是由大学科研原型系统项目转变为时下流行的开放源代码数据库,它的前身是Postgres数据库。PostgreSQL具有用户自定义类型与操作符、表继承、部分索引与表达式索引、丰富的服务器端编码接口等特性。就技术层面而言,PostgreSQL与商业数据库相比并不逊色。

2.2          ORM

Hibernate是一种实现对象/关系之间映射的开源框架 ,对JDBC进行了轻量级的对象封装,使得程序员可以使用面向对象编程思维来操作关系数据库[1]。它是按照LGPL许可证发布的开放源代码应用程序,用于Java的超高性能的对象/关系持久性和查询服务。Hibernate已成为java领域内首选的ORM工具,它的体系结构如图1所示:

1 Hibernate体系结构总览

2.3          IOC容器

Spring提供了一套全面并且十分成熟的轻型应用程序基本框架,并且对复杂的应用开发提供了有力的支持。Spring最大的优势在于它是从实际项目开发经验中抽取的,其提供了丰富的类库,可大大节省编码量,它是一种高效的、可高度重用的应用框架。Spring框架中目前最吸引人也是该应用框架最具特色的地方就是名为控制反转(IOC=Inverse Of Control)或者依赖注入(DI=Dependence Injection)的设计思想 [2]。对于依赖容器的参数化事务管理而言,Spring则可以用来帮助实现对事务的管理而无须使用EJB

Spring本身也是一个容器,只是相对EJB容器所要付出的代价而言,Spring属于轻量级容器,它能够替代EJB,通过使用AOP来提供声明式事务管理,即可通过Spring实现基于容器的事务管理。SpringEJB最大的区别在于:第一,Spring可以为任意的Java Class实现事务管理而无须转换成标准的EJB;第二,Spring事务管理并不依赖特定的事务资源从而使得系统的应用与部署更佳灵活。 

2.4          基于组件的表示层

JSF是一个包括SUN在内的专家组定义的基于组件的WEB应用程序框架,但其又具备类似Struts形式的页面跳转控制和MVC模式特征[3]JSF的组件概念没有象Struts那样必须继承ActionForm的限制;JSF在事件粒度上要细腻,不象Struts那样,一个页面一个事件,JSF可以细化到表单中的每个字段上。

JSF 的主要优势之一就是它既是 Java Web 用户界面标准又是严格遵循模型-视图-控制器 (MVC) 设计模式的框架,结构如图2所示。用户界面代码(视图)与应用程序数据和逻辑(模型)的清晰分离使 JSF 应用程序更易于管理。为了准备提供页面对应用程序数据访问的 JSF 上下文和防止对页面未授权或不正确的访问,所有与应用程序的用户交互均由一个前端“Faces Servlet”控制器)来处理。

2 JSFMVC实现

MyFaces 是一个JSF实现,它通过 Apache 作为一个开放源代码项目提供。Myfaces 还是对 JSF 基本 UI 组件的增强,它拥有更广泛的 UI 功能,如集成的 Tiles 支持、支持 Javascript 的菜单和树控件。

2.5          Ajax

Ajax4jsf 是一个在JSF页面中添加Ajax(Active Javascript and Xml)功能而不用写JS代码的开源框架[4]。该框架使用一个组件库来添加Ajax技术到已存在的页面中,而不用写任何js代码或者用新的Ajax widgets来替换已经存在的JSF组件。Ajax4jsf使用页面范围的Ajax支持来替代传统的组件范围的支持.这意味着你可以在页面中定义事件来激活Ajax请求,和当Ajax请求根据客户端的事件改变了服务器的数据时应该同步的页面区域。

2.6          Xdoclet

以上介绍的各个框架都或多或少需要配置文件,而这些文件大多是xml文件。为了提高开发效率,需要找到自动生成xml配置文件的方法。

XDoclet是一个扩展的Javadoc Doclet引擎。它是一种通用的java工具,可以让你创建自己的javadoc @tags进而利用XDoclet中的Templet enging基于这些@tags生成源代码或其他文件。XDoclet已经支持一些常见的任务了,例如生成web应用的web.xmlJSFfaces-config.xml等。 结构如图3所示。

3 Xdoclet黑盒子

3         基于多框架的J2EE快速开发方法

3.1          模拟电子报税教学系统简介

模拟电子报税教学系统的主要功能是以信息化的手段模拟国家纳税申报过程的整个流程,本系统为高校财务会计专业的学生学习国家税务知识提供一个生动形象的平台,让他们以直接动手的方式学习我国纳税申报的整个过程,适应企业现代化报税需求。

为了方便地实现模块化开发、提高代码的重用性和维护性,并充分考虑到系统的跨平台和开发成本等因素,模拟电子报税教学系统采用J2EE平台和基于开源框架的分层结构。图4展示了模拟电子报税教学系统的设计模型。

4 模拟电子报税教学系统的设计模型

模拟电子报税教学系统的开发架构最终确定为Postgresql+Hibernate+Spring+Myfaces+Ajax4jsf,并综合使用Xdoclet+Junit+Tomcat简化开发过程。

3.2          模拟电子报税教学系统的快速开发

表示层的Myfaces框架和综合管理业务逻辑层、数据访问层的Spring框架在系统中起着举足轻重的作用。这些框架关注软件开发的多个侧重点(Aspect),如数据访问、页面跳转、对象生命期和事务管理等。将各种各样关注信息和各种配置文件元信息与后台源代码放置在一起,有助于开发人员理清思路。以下选择表示层和业务逻辑层阐述本系统的具体实现。

3.2.1                     表示层

使用Myfaces框架实现表示层的具体步骤为:

1)         设计用于存取公共信息的全局基类;

2)         设计各个表示环节的后台托管Bean

3)         设计与托管Bean相对应的JSF页面;

4)         根据业务流程设计页面跳转流程;

5)         配置face-config.xmlweb.xml

以教师通过后台管理功能检查学生的申报表为例,访问homeworkList.jsp时,JSFFacesServlet截获学生查看作业列表的请求,通过解析homeworkList.jsp中表格的数据来源是#{SelectHomeworkBean.homeWork},再通过查找face-config.xml进一步得到数据来源是edu.jju.aet.SelectHomeworkBean类。FacesServlet调用SelectHomeworkBean.getHomeWork得到数据,并将其显示在此页面中。

其中用到的实际编写代码xdoclet元数据主要有:

1)         BaseBean被设计用于保存用户浏览平台的当前若干状态信息,如当前用户、当前课程和在线时间等:

public class BaseBean {

     private Visit visit;

     ···//getter-setters

}

2)         所有的托管Bean将继承自BaseBean

/**  @jsf.bean  name=" SelectHomeworkBean " scope="request"

 * @jsf.navigation  from="/homeworkList.jsp" result="viewdetail" to="/ detail .jsp" …*/

public class SelectHomeworkBean extends BaseBean{

     /**  @jsf.managed-property name="visit" value="#{visit}"  */

…}

3)         这样,所有的Bean都可以访问到session范围的状态信息visit

public class Visit {

     private Userinfo user;

     private Homework currentHomework;

     …//other members and getter-setters

}

最后,由Xdoclet生成的JSF配置文件内容如下:

<managed-bean>

  <managed-bean-name>SelectHomeworkBean</managed-bean-name>

  <managed-bean-class>edu.jju. aet.SelectHomeworkBean</managed-bean-class>

  <managed-bean-scope>request</managed-bean-scope>

  <managed-property>

   <property-name>visit</property-name>

   <property-class> edu.jju.aet.web.Visit</property-class>

   <value>#{sessionScope.visit}</value>

</managed-property>

</managed-bean>

<navigation-rule>

  <from-view-id>/homeworkList.jsp</from-view-id>

  <navigation-case>

   <from-outcome>viewdetail</from-outcome>

   <to-view-id>/detail.jsp</to-view-id>

  </navigation-case>

</navigation-rule>

Web 应用的特点是用户可能从任何地方进入,按照一种完全随机的次序访问各个页面,甚至可能跳过多个页面,也可能在很长的时间内毫无动静。无论是JSF 还是其他Web编程框架都无法改变这一点,然而JSF 能够隐藏Web访问固有的混乱,帮助开发者建立清晰明确的秩序和规则。

3.2.2                     业务逻辑层

业务逻辑层处理系统中的所有业务逻辑。业务逻辑层的组件是系统最具价值的软件工具。在这里包含了报税过程的访问控制和修改数据的规则。由于在层次体系结构中责任的分离,因此这一层的重点在于设计对象的可重用性,减少表示层与数据层的耦合。

在业务逻辑层定义的组件可分为以下三类:

1)         Resource Control(系统资源控制)

管理所有的资源,包括课件资源、作业资源和在线测试等的CRUD操作、访问控制等。

2)         Status Recorder (记录学习状态)

包括实体(教师、学生)的当前学习、管理状态和访问记录等。

3)         Business Handler (处理业务逻辑)

包括申报纳税、税款计算和税款缴纳等业务逻辑的处理过程。

将业务逻辑组件交给spring托管,是快速开发方法的核心之一:

1)         业务逻辑组件xdoclet元数据

/**@spring.bean   id="HomeworkServiceTarget"*/

public class HomeworkService implements  IHomeworkService  {

  private edu.jju.persist.IUserinfoDAO userinfoDao;

  /**@spring.property   name="userinfoDao" ref="UserinfoDAO"   */

  public edu.jju.persist.IUserinfoDAO getUserinfoDao() {

       return userinfoDao;

  }

}

2)         全局状态信息visit

  <bean    id="visit"    class=" edu.jju.jsf.bean.Visit" scope="session"/>

3)         DAO托管和基于容器的事务管理

<bean id="UserinfoDAO"

  class="org.springframework.aop.framework.ProxyFactoryBean">

  <property name="singleton">

       <value>false</value>

  </property>

  <property name="interceptorNames">

       <list>

            <value>allInTransaction</value>

            <value>UserinfoDAOTarget</value>

       </list>

  </property>

</bean>

<bean id="allInTransaction"

  class="org.springframework.transaction.interceptor.TransactionInterceptor">

  <property name="transactionManager">

       <ref local="txManager" />

  </property>

  <property name="transactionAttributes">

       <props>

            <prop key="*">PROPAGATION_REQUIRED</prop>

       </props>

  </property>

</bean>

<bean id="txManager"

  class="org.springframework.orm.hibernate3.HibernateTransactionManager">

  <property name="sessionFactory" ref="sessionFactory" />

</bean>

以上介绍了通过各框架之间的协作快速构建Web应用系统的过程,由此可见,采用多种框架协作开发很大程度上提高了开发效率。同样方法,通过xdoclet快速生成hibernate映射文件,也可以快速构建数据实体层。

4         结论

在模拟电子报税教学系统开发中,采用开源框架来实现各层操作,其优势是显而易见的。首先,Hibernate提供了从对象到数据库表的映射和数据查询、恢复等机制,实现数据层对象的持久性;其次,Spring提供了IOCBean管理模式,并提供了灵活的通过接口操作对象的机制,其可扩展性相对于MVC框架来说要好得多;同时,Myfaces是丰富的组件框架,提供可自定义组件机制;最后Xdoclet提供了编写繁琐的xml配置文件的替代方式。综上所述,使用基于框架的快速开发方法,使Java企业级应用开发更加容易、灵活、强大。

参考文献

[1]       Hibernate. 2006. http://hibernate.org

[2]       Martin Fowler.Inversion of Control Containers and the Dependency Injection Pattern[J/OL],2004

[3]       Kito D. Mann. JavaServer Faces in Action[M].Manning,2005

[4]       Dave Crane,Eric Pascarello. AJAX In Action[M].Manning,2006

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
授权方式: 开源软件 界面语言: 简体中文 文件大小: 16.9 MB 更新时间: 2020-08-11 资源类型: 国产软件 推荐等级: ★★★☆☆ 平台环境: JAVA/Mysql 作者主页: 点击查看 演示地址: 点击查看 详细介绍 – [ J2eeFAST企业级快速开发平台 v2.0.8 ] J2eeFAST 是一个Java EE企业级快速开发平台,基于经典技术组合(Spring Boot、Spring MVC、Apache Shiro、MyBatis-Plus、Freemarker、Bootstrap、AdminLTE)采用经典开发模式,让初学者能够更快的入门并投入到团队开发中去。在线代码生成功能,包括核心模块如:组织机构、角色用户、菜单及按钮授权、数据权限、系统参数、内容管理、license认证,BPM工作流等。采用松耦合设计;界面无刷新,一键换肤;众多账号安全设置,密码策略;在线定时任务配置;支持多数据源;支持读写分离、分库分表。 J2eeFAST功能 1、用户管理:用户是系统操作者,该功能主要完成系统用户配置。 2、部门管理:配置系统组织机构(公司、部门),树结构展现支持数据权限。 3、岗位管理:配置系统用户所属担任职务。 4、菜单管理:配置系统菜单,操作权限,按钮权限标识等。 5、角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 6、字典管理:对系统中经常使用的一些较为固定的数据进行维护。 7、参数管理:对系统动态配置常用参数。 8、操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 9、登录日志:系统登录日志记录查询包含登录异常。 10、在线用户:当前系统中活跃用户状态监控。 11、定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 12、代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 13、服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。 14、在线构建器:拖动表单元素生成相应的HTML代码。 15、连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 16、产品许可: 对项目进行许可证书控制,防止程序拷贝运行。 17、公告通知: 针对项目升级重要情况出通知公告直接生成静态页面,可以实现延迟推送,设置时效性,实时。 J2eeFAST软件架构 核心框架:Spring Boot 2.2.5.RELEASE 安全框架:Apache Shiro 1.4.2 模板引擎:Freemarker 前端:AdminLTE 2.3.8, Bootstrap 3.3.7, Bootstrap-Table 1.11.0, JQuery 3.3.1 持久层框架:MyBatis-Plus 3.3.1 定时任务: Quartz 数据库连接池:Druid 1.10.1 数据库: Mysql5.7 分布式缓存数据库: Redis 4.0.9 工具类:Hutool 4.5.8 工作流引擎:flowable 6.4.2 J2eeFAST安装教程 1、需要准备环境Mysql5.7以上、JDK1.8、Maven3.3、Redis4.X以上、开发工具eclipse或者IEDA。 2、下载源码git clone https://gitee.com/zhouhuanOGP/J2EEFAST.git。 3、编译代码找到根目录下pom.xml,执行mvn clean install命令编译一键打包。一般来说不会有什么问题,如果还是编译不成功,可以按照优先级逐个编译试一试。 4、导入数据库db目录里initDb.sql有建库建表语句按步骤执行即可。 5、将代码导入开发工具fast-admin启动模块- 执行FastApplication类即可 注意:fast-admin模块,资源目录application-Test.yml中修改连接数据库和链接地址;如果你是按照initDb.sql建库,test.sql导入初始数据,则账号密码用户名都不需要修改。 6、搭建文档。 最大管理员账号:admin 密码:admin。其他账户密码都是123456 演示地址的账号 :admin 密码:admin J2eeFAST截图 相关阅读 同类推荐: 站长常用源码
J2eeFAST是一个Java EE企业级快速开发平台,基于经典技术组合(Spring Boot、Spring MVC、Apache Shiro、MyBatis-Plus、Freemarker、Bootstrap、AdminLTE)采用经典开发模式,让初学者能够更快的入门并投入到团队开发中去。在线代码生成功能,包括核心模块如:组织机构、角色用户、菜单及按钮授权、数据权限、系统参数、内容管理、license认证,BPM工作流等。采用松耦合设计;界面无刷新,一键换肤;众多账号安全设置,密码策略;在线定时任务配置;支持多数据源;支持读写分离、分库分表。 J2eeFAST功能: 1、用户管理:用户是系统操作者,该功能主要完成系统用户配置。 2、部门管理:配置系统组织机构(公司、部门),树结构展现支持数据权限。 3、岗位管理:配置系统用户所属担任职务。 4、菜单管理:配置系统菜单,操作权限,按钮权限标识等。 5、角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 6、字典管理:对系统中经常使用的一些较为固定的数据进行维护。 7、参数管理:对系统动态配置常用参数。 8、操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 9、登录日志:系统登录日志记录查询包含登录异常。 10、在线用户:当前系统中活跃用户状态监控。 11、定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 12、代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 13、服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。 14、在线构建器:拖动表单元素生成相应的HTML代码。 15、连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 16、产品许可: 对项目进行许可证书控制,防止程序拷贝运行。 17、公告通知: 针对项目升级重要情况出通知公告直接生成静态页面,可以实现延迟推送,设置时效性,实时。 J2eeFAST软件架构: 核心框架:Spring Boot 2.2.5.RELEASE 安全框架:Apache Shiro 1.4.2 模板引擎:Freemarker 前端:AdminLTE 2.3.8, Bootstrap 3.3.7, Bootstrap-Table 1.11.0, JQuery 3.3.1 持久层框架:MyBatis-Plus 3.3.1 定时任务: Quartz 数据库连接池:Druid 1.10.1 数据库: Mysql5.7 分布式缓存数据库: Redis 4.0.9 工具类:Hutool 4.5.8 工作流引擎:flowable 6.4.2 J2eeFAST安装教程: 1、需要准备环境Mysql5.7以上、JDK1.8、Maven3.3、Redis4.X以上、开发工具eclipse或者IEDA。 2、下载源码git clone https://gitee.com/zhouhuanOGP/J2EEFAST.git。 3、编译代码找到根目录下pom.xml,执行mvn clean install命令编译一键打包。一般来说不会有什么问题,如果还是编译不成功,可以按照优先级逐个编译试一试。 4、导入数据库db目录里initDb.sql有建库建表语句按步骤执行即可。 5、将代码导入开发工具fast-admin启动模块- 执行FastApplication类即可 注意:fast-admin模块,资源目录application-Test.yml中修改连接数据库和链接地址;如果你是按照initDb.sql建库,test.sql导入初始数据,则账号密码用户名都不需要修改。 6、搭建文档。 最大管理员账号:admin 密码:admin。其他账户密码都是123456 演示地址的账号 :admin 密码:admin   J2eeFAST企业级快速开发平台 v2.2.1 更新日志: 升级mybatisplus到最新版本3.4.2 新增数据库脚本自动升级 适配恶心的IE浏览器最低适配IE10 修复添加SQLServer数据库源问题 修复多源数据JTA事务问题 新增多源数据支持Mapper接口注解 修复表格显示图片点击事件问题 优化适配移动端 linux环境升级、启动脚本备份文件无目录问题 修复多源数据库代码生成切换数据库问题 修复oracle兼容问题 修复代码生成器生成头像问题 修复适配数据库执行语句问题 新增金额转换中文通用方法 修复代码生成div标签问题 调整文件上传考虑事务问题、不删除文件 移除项目pom文件多余配置 新增系统默认配置文件 简化配置文件 移除代码默认密码字段 新增base64字符判断公用方法 优化图片上传支持直接Base64字符 新增表格通过id获取行

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值