论文部分内容阅读
摘 要:本文主要介绍了基于JAVA EE体系下JSF、Spring和MyBatis三个技术框架的基本概念以及它们所包含的核心内容,重点通过一个示例描述了三个技术的搭建和使用。
关键词:SM框架;分层架构;JSF;Spring;MyBatis
中图分类号:TP393.092
1 JSM框架的介绍和应用
1.1 JSM框架的概念
1.1.1 概述
首先,JSM不是一个框架,而是多个框架的集成,它是为了实现web应用而采用的开源框架的集合。这种框架可以满足JAVA EE多层体系结构的开发目的。JAVA EE不仅是开发平台同时也是一个开发规范,JAVA EE最大的特点是引入了WEB应用。目前企业应用开发的系统多是采用分层架构的模式进行设计,JAVAEE正式基于这种分层架构的考虑,是多层的分布式体系结构。
1.1.2 JAVA EE的架构介绍
JAVA EE的分层结构主要有:
第一层:客户端层。客户浏览器段的程序,例如JS脚本程序、嵌入网页运行的JAVA APPLET程序。主要用到 的技术有JS、APPLET。
第二层:应用服务器层。一般情况下,此层包含支持客户端请求的表示逻辑和业务逻辑。表示层由显示HTML页面的JSP页面和servlets实现。业务逻辑有两种实现方式,一种轻量级一种重量级的实现。轻量级通过Spring等开源框架实现,重量级通过RMI对象和EJB实现。EJB依靠容器(Container)实现事务处理、生命周期和状态管理、资源池、安全等问题,简而言之,容器就是EJB依赖执行的运行环境。主要用到的技术有:jsp、servlet,jsf框架及规范。可以说JSF是MVC架构的技术也是一种JAVAEE在中间层提供的一种规范。
第三层:后端层。此层是现有应用和数据仓库的组合,也称为企业信息系统(EIS)层,因为它可以包含企业资源规划(ERP)、大型主机事务处理、数据库系统及其它遗留下来的信息系统等许多系统。主要包括JDBC技术、JAVA持久化API、JTA等。
1.2 JSM与JAVAEE各层架构的对应关系
JSM框架中J代表“JSF”框架,它是支持web系统实现JAVAEE中第二层的表示层逻辑的技术框架。框架中的S代表“spring”是为了实现第二层的轻量级业务逻辑的技术框架。由于“spring”的认可度非常高,国内众多web应用都采用这种框架来实现系统的业务逻辑层。框架中的M代表“mybatis”是为了实现第三层后端层的技术框架。
JSM工作的整体流程开始于用户的请求,结束在对请求的相应,而中间的过程就是对该业务的处理过程。
用户通过浏览器提交请求,JSF框架的控制层调用业务层逻辑进行进一步的业务处理,业务层在处理业务时调用数据处理层对业务中的数据进行必要的存储、修改、删除或查询等操作,并逐级返回给JSF框架的控制层,由控制流转到相应的页面,最终由页面进行结果的呈现。
2 JSM的详细介绍
JSF是JAVAServer Faces的缩写,是Sun公司在JCP(Java Community Process)下JSR127中倡导的技术,目前已列入java EE中间视图层的规范技术。它提供jsp页面显示的组件对象,提供转换和校验组件数据,并能将数据传入服务端进行保存。JSF与Struts最大的区别就在于JSF本身既是一种技术同时又是JAVAEE的中间层规范技术。因此我认为JSF技术的发展更会得到体系的有力支持。
JSF的典型特征是以用户界面组件为中心,建立在Servlet基础上,基于jsf的应用程序也是web应用,它实现的是MVC模型MODEL2的形式。
Spring是针对Java EE容器服务及Java EE API提供抽象和集成支持的框架技术,它的出现为实施JAVA EE降低了门槛,Srping是非侵入式框架,也就是说业务本身的代码不会与Spring框架之间有依赖关系。
Spring框架像一个模板,它可以和MVC框架一起使用,同时也含有自己的MVC框架,它可以管理事物也同时提供远程调用的接口,每个部分都可以单独运用到自身的系统中。下图为Spring的架构图,图中主要列出了组成Spring框架的功能模块。
Spring框架的核心技术主要有两个,即控制反转容器(IOC)和面向切面编程技术。
控制反转(IOC)也被称为依赖注入(DI),目的是为了处理对象之间的依赖关系,其他对象只能通过构造方法参数、工厂方法参数、对象属性的方法注入到当前对象的实例中去。ApplicationContext对象是IOC容器的接口用来负责对象的实例化,配置、和组装读取配置的元数据,配置元数据以XML格式表示,Java注释,或Java代码。依赖注入的两种主要方式是通过构造方法注入和setter方法注入。
向切面编程技术是试图用另外一种方式去思考程序结构以便补充面向方向编程的内容。此外AOP提供了一个非常好的中间件解决方案。切面的含义就是横切面,代表所有类的功能,这些功能可以统一提取出来,通过DI方式注入到每个类中进行执行,而对于通用功能的管理则可以统一进行。AOP的实现原理是动态代理技术,即通过代理对象进行对目标方法的调用,同时控制调用方法的前后业务逻辑。Spring AOP提供了定义切入点、切入点前后等配置方式,同时通过AspectJ表达式来定义哪些类执行切入的功能。常用到AOP的地方是事物管理、安全检查、缓存、对象池管理等系统的通用功能,
MyBatis的前身是IBatis,一个apache组织的开源项目,后因为项目迁移到了google,更名为MyBatis。它是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。与Hibernate项目,MyBatis可以更加灵活的配置sql,这对于灵活多变的业务数据处理无疑是最佳的选择,当然Hibernate和MyBatis各有各的优势,在此不进行二者之间的对比,至于应用开发应该选择哪一个作为持久化层的框架,我认为还是要依据项目自身的特点而定。 3 JSM框架的搭建
JSM框架的搭建主要是解决他们之间的关联问题,也就是三个框架在同一个系统中使用时的配置方式。
接下来将举一个小例子来具体介绍JSM之间搭建。
3.1 示例需求说明
该示例描述了一个简单判断用户是否存在的功能,步骤如下:
(1)用户在页面中输入用户名;(2)用户点击提交按钮;(3)系统在数据库中查找相关的用户名。若存在到则返回欢迎信息,若不存在则返回找不到的提示信息;(4)系统返回欢迎页面,显示用户是否存在的提示信息。
3.2 环境搭建
开发工具:Eclise3.4;JAVA版本:JDK1.5;应用服务器:Tomcat6.0;JSF1.2;Spring3.0.5;MyBatis3.1.1。
3.3 示例详细设计
依据项目分层设计架构模式,该示例主要分三层设计,即视图层、业务层、持久化层。(注意:为了达到简单清晰的目的,对每个层次只使用实现类进行表述,在实际开发过程中往往需要面向接口进行编程。)
3.4 JSM框架配置
3.4.1 配置JSF框架
首先,在web.xml文件中配置JSF,内容如下:
其次,在web.xml文件中配置faces-config.xml文件的引用。
第三,在faces-config.xml文件中配置JSF和Spring的关联关系。
第四,在faces-config.xml文件中注册TestBean,注意在注册TestBean的时候将spring管理的TestServce作为TestBean的属性进行注册。因此在TestBean中要定义相同名称的属性并且建立属性的set、get方法。
3.4.2 配置Spring
首先,在web.xml中配置监听器。
第二,在web.xml中配置spring配置文件的引用。
第三,在spring配置文件中配置数据源。
第四,在beans.xml文件中注册TestService类、TestDao类,且通过依赖注入的方式将TestDao作为属性注入到TestService类中,如下所示:
3.4.3 配置MyBatis
首先,在beans.xml文件中配置MyBatis。
第二,修改TestDao类的注册信息。这一步的前提是TestDao类基础了Mybatis提供的父类SqlSessionDaoSupport。该父类需要属性sqlSessionTemplate,因此在TestDao类的注册信息中注入属性sqlSessionTemplate。
3.4.4 示例运行
第一,输入用户名,点击提交按钮。
第二,显示欢迎信息。
参考文献:
[1]Spring Framework Reference Documentation[J/OL].http://docs.spring.io/spring/docs/3.2.10.RELEASE/spring-framework-reference/htmlsingle/#jsf-delegatingvariableresolver.
[2]MyBatis Version:3.2.7 Last Published:2014.http://mybatis.github.io/mybatis-3/index.html.
[3]罗会波.JSF第一步[M].北京:清华大学出版社,2014.
作者简介:刘小维(1982.12-),女,满族,北京人,软件工程师,管理学学士,研究方向:Java企业级应用开发、软件发平台研发。
作者单位:中国金融电子化公司,北京 100054
关键词:SM框架;分层架构;JSF;Spring;MyBatis
中图分类号:TP393.092
1 JSM框架的介绍和应用
1.1 JSM框架的概念
1.1.1 概述
首先,JSM不是一个框架,而是多个框架的集成,它是为了实现web应用而采用的开源框架的集合。这种框架可以满足JAVA EE多层体系结构的开发目的。JAVA EE不仅是开发平台同时也是一个开发规范,JAVA EE最大的特点是引入了WEB应用。目前企业应用开发的系统多是采用分层架构的模式进行设计,JAVAEE正式基于这种分层架构的考虑,是多层的分布式体系结构。
1.1.2 JAVA EE的架构介绍
JAVA EE的分层结构主要有:
第一层:客户端层。客户浏览器段的程序,例如JS脚本程序、嵌入网页运行的JAVA APPLET程序。主要用到 的技术有JS、APPLET。
第二层:应用服务器层。一般情况下,此层包含支持客户端请求的表示逻辑和业务逻辑。表示层由显示HTML页面的JSP页面和servlets实现。业务逻辑有两种实现方式,一种轻量级一种重量级的实现。轻量级通过Spring等开源框架实现,重量级通过RMI对象和EJB实现。EJB依靠容器(Container)实现事务处理、生命周期和状态管理、资源池、安全等问题,简而言之,容器就是EJB依赖执行的运行环境。主要用到的技术有:jsp、servlet,jsf框架及规范。可以说JSF是MVC架构的技术也是一种JAVAEE在中间层提供的一种规范。
第三层:后端层。此层是现有应用和数据仓库的组合,也称为企业信息系统(EIS)层,因为它可以包含企业资源规划(ERP)、大型主机事务处理、数据库系统及其它遗留下来的信息系统等许多系统。主要包括JDBC技术、JAVA持久化API、JTA等。
1.2 JSM与JAVAEE各层架构的对应关系
JSM框架中J代表“JSF”框架,它是支持web系统实现JAVAEE中第二层的表示层逻辑的技术框架。框架中的S代表“spring”是为了实现第二层的轻量级业务逻辑的技术框架。由于“spring”的认可度非常高,国内众多web应用都采用这种框架来实现系统的业务逻辑层。框架中的M代表“mybatis”是为了实现第三层后端层的技术框架。
JSM工作的整体流程开始于用户的请求,结束在对请求的相应,而中间的过程就是对该业务的处理过程。
用户通过浏览器提交请求,JSF框架的控制层调用业务层逻辑进行进一步的业务处理,业务层在处理业务时调用数据处理层对业务中的数据进行必要的存储、修改、删除或查询等操作,并逐级返回给JSF框架的控制层,由控制流转到相应的页面,最终由页面进行结果的呈现。
2 JSM的详细介绍
JSF是JAVAServer Faces的缩写,是Sun公司在JCP(Java Community Process)下JSR127中倡导的技术,目前已列入java EE中间视图层的规范技术。它提供jsp页面显示的组件对象,提供转换和校验组件数据,并能将数据传入服务端进行保存。JSF与Struts最大的区别就在于JSF本身既是一种技术同时又是JAVAEE的中间层规范技术。因此我认为JSF技术的发展更会得到体系的有力支持。
JSF的典型特征是以用户界面组件为中心,建立在Servlet基础上,基于jsf的应用程序也是web应用,它实现的是MVC模型MODEL2的形式。
Spring是针对Java EE容器服务及Java EE API提供抽象和集成支持的框架技术,它的出现为实施JAVA EE降低了门槛,Srping是非侵入式框架,也就是说业务本身的代码不会与Spring框架之间有依赖关系。
Spring框架像一个模板,它可以和MVC框架一起使用,同时也含有自己的MVC框架,它可以管理事物也同时提供远程调用的接口,每个部分都可以单独运用到自身的系统中。下图为Spring的架构图,图中主要列出了组成Spring框架的功能模块。
Spring框架的核心技术主要有两个,即控制反转容器(IOC)和面向切面编程技术。
控制反转(IOC)也被称为依赖注入(DI),目的是为了处理对象之间的依赖关系,其他对象只能通过构造方法参数、工厂方法参数、对象属性的方法注入到当前对象的实例中去。ApplicationContext对象是IOC容器的接口用来负责对象的实例化,配置、和组装读取配置的元数据,配置元数据以XML格式表示,Java注释,或Java代码。依赖注入的两种主要方式是通过构造方法注入和setter方法注入。
向切面编程技术是试图用另外一种方式去思考程序结构以便补充面向方向编程的内容。此外AOP提供了一个非常好的中间件解决方案。切面的含义就是横切面,代表所有类的功能,这些功能可以统一提取出来,通过DI方式注入到每个类中进行执行,而对于通用功能的管理则可以统一进行。AOP的实现原理是动态代理技术,即通过代理对象进行对目标方法的调用,同时控制调用方法的前后业务逻辑。Spring AOP提供了定义切入点、切入点前后等配置方式,同时通过AspectJ表达式来定义哪些类执行切入的功能。常用到AOP的地方是事物管理、安全检查、缓存、对象池管理等系统的通用功能,
MyBatis的前身是IBatis,一个apache组织的开源项目,后因为项目迁移到了google,更名为MyBatis。它是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。与Hibernate项目,MyBatis可以更加灵活的配置sql,这对于灵活多变的业务数据处理无疑是最佳的选择,当然Hibernate和MyBatis各有各的优势,在此不进行二者之间的对比,至于应用开发应该选择哪一个作为持久化层的框架,我认为还是要依据项目自身的特点而定。 3 JSM框架的搭建
JSM框架的搭建主要是解决他们之间的关联问题,也就是三个框架在同一个系统中使用时的配置方式。
接下来将举一个小例子来具体介绍JSM之间搭建。
3.1 示例需求说明
该示例描述了一个简单判断用户是否存在的功能,步骤如下:
(1)用户在页面中输入用户名;(2)用户点击提交按钮;(3)系统在数据库中查找相关的用户名。若存在到则返回欢迎信息,若不存在则返回找不到的提示信息;(4)系统返回欢迎页面,显示用户是否存在的提示信息。
3.2 环境搭建
开发工具:Eclise3.4;JAVA版本:JDK1.5;应用服务器:Tomcat6.0;JSF1.2;Spring3.0.5;MyBatis3.1.1。
3.3 示例详细设计
依据项目分层设计架构模式,该示例主要分三层设计,即视图层、业务层、持久化层。(注意:为了达到简单清晰的目的,对每个层次只使用实现类进行表述,在实际开发过程中往往需要面向接口进行编程。)
3.4 JSM框架配置
3.4.1 配置JSF框架
首先,在web.xml文件中配置JSF,内容如下:
其次,在web.xml文件中配置faces-config.xml文件的引用。
第三,在faces-config.xml文件中配置JSF和Spring的关联关系。
第四,在faces-config.xml文件中注册TestBean,注意在注册TestBean的时候将spring管理的TestServce作为TestBean的属性进行注册。因此在TestBean中要定义相同名称的属性并且建立属性的set、get方法。
3.4.2 配置Spring
首先,在web.xml中配置监听器。
第二,在web.xml中配置spring配置文件的引用。
第三,在spring配置文件中配置数据源。
第四,在beans.xml文件中注册TestService类、TestDao类,且通过依赖注入的方式将TestDao作为属性注入到TestService类中,如下所示:
3.4.3 配置MyBatis
首先,在beans.xml文件中配置MyBatis。
第二,修改TestDao类的注册信息。这一步的前提是TestDao类基础了Mybatis提供的父类SqlSessionDaoSupport。该父类需要属性sqlSessionTemplate,因此在TestDao类的注册信息中注入属性sqlSessionTemplate。
3.4.4 示例运行
第一,输入用户名,点击提交按钮。
第二,显示欢迎信息。
参考文献:
[1]Spring Framework Reference Documentation[J/OL].http://docs.spring.io/spring/docs/3.2.10.RELEASE/spring-framework-reference/htmlsingle/#jsf-delegatingvariableresolver.
[2]MyBatis Version:3.2.7 Last Published:2014.http://mybatis.github.io/mybatis-3/index.html.
[3]罗会波.JSF第一步[M].北京:清华大学出版社,2014.
作者简介:刘小维(1982.12-),女,满族,北京人,软件工程师,管理学学士,研究方向:Java企业级应用开发、软件发平台研发。
作者单位:中国金融电子化公司,北京 100054