1、基于 spring mvc 和 mybatis 的轻量级 mvc 框架研究1基于 spring mvc 和 mybatis 的轻量级 mvc 框架研究摘要:基于模型-视图- 控制器网络应用程序的开发和运营效率,本文根据目前的业务环境,亟需的项目实践,着重研究了网络应用系统的框架。通过对 Spring MVC 框架、Mybatis 框架以及相关的一些核心技术的研究并结合 JSP 和 JSTL 技术,本文实现了基于Spring MVC 和 Mybatis 轻量级网络应用程序框架的设计。关键词:Spring MVC; Mybatis; MVC; Framework1. 导言近年来,互联网技术快速发展
2、,因现实需要,技术不断改进创新,基于浏览器/服务器(B / S)模式的多层网络架构也逐渐成熟。因为 MVC 模式克服传统网络应用程序开发方法的缺点,所以目前已广泛使用。MVC 框架系统分为模型、视图和控制器三层,各层相对独立,且每层都有一个明确的函数。因这些函数羽状图,MVC 促进了模块化发展,极大地提高了效率,系统开发的可维护性和代码的可重用性,同时也适应日益复杂的多层应用程序系统的设计要求 1。在 Java 2 Enterprise Edition(J2EE),MVC 网络框架的发展空前成功。或有开发效率的优势,或有运营效率的优势,或在安全保障占据优势。我们可以结合两个或两个以上的优势来创
3、建一个相对有效、轻量级框架。Spring MVC 与控制器,模型对象,调度程序和程序处理对象彼此分离,使其更容易定制 2。此外,Mybatis 数据库的持久层框架,封装 Java 数据库连接(JDBC) 3以及操纵数据库流程简化,与 Hibernate 相比,其自由度和数据库的访问效率也已得到提高。将 Spring MVC 和 Mybatis 这两种技术有机地结合,构建一个轻量级的 MVC 开发框架,不仅可以有效地提高系统开发的效率,简化发展的复杂性,也改善了系统的安全性,稳定性和鲁棒性。本文分以下部分:第一部分:综述及比较 Struts2 和 Spring MVC,第二部分:介绍Hibern
4、ate 和 Mybatis,第三部分:基于 Spring MVC 和 Mybatis 系统执行方案,第四部分描述了不同框架间的比较,第五部分:结论。22. 相关工作AMVC 框架因为 MVC 能理想地分离业务逻辑和观点,所以它已成为程序设计的发展趋势。人们不断深研 MVC,MVC 框架持续发展。目前,比较成熟和稳定的 Struts MVC 框架主要包括 Struts、Struts2 、Webwork、Spring MVC 等。以下介绍 Struts2 和 Spring MVC。(1) Struts2Struts2 是一个在 Struts1 和 Webwork 合并的基础上形成的新的网络层应用程
5、序框架4。 Struts2 以 WebWork 为核心,主要是使用 Java 服务器页面(JSP)和 Servlet 技术,将Servlet,JSP 自定义标记和信息资源整合成一个统一的框架。开发人员只需要开发相应的 Action 类, ActionFormBean 和 JSP 组件,开发 Struts 框架应用项目。(2) Spring MVCSpring 是一个轻量级容器框架,有控制反转(IoC)和面向方面编程(AOP) 5的性能以及七个定义良好的模块。七个模块中的 Spring MVC,是一个全功能的轻量级程序可以实现 MVC 对 Web 应用构建。Spring MVC 完美实现 MVC
6、 的核心概念和特点,通过简单配置就能动态配置组件。Spring MVC 是这样运作的:当客户端发送一个 HTTP 请求时,核心控制器(DispatcherServlet)接收请求,根据 URL 请求调度搜索 HandleMapping并找到到适当的控制器。控制器调用适当的业务逻辑来处理请求,当处理过程完成后,返回视图名称和 ModelAndView 对象 DispatcherServlet,最后由 ViewResolver 返回ModelAndView 并呈现相应的视图。图 1 显示了 Spring MVC 的请求处理管道。图 1. Spring MVC 的请求处理管道(3) Struts2
7、和 Spring MVC 的比较3a) 运行效率:Struts2 的文件配置数量大于 Spring MVC;不过 Spring MVC 在使用过程中更简洁且开发效率比 Struts2 高。b) 运行效率:Struts2 的设计是基于类的请求,为类级拦截器,而 Spring MVC 的设计基于方法,为方法级拦截器;Struts2 导入所有的类行为属性,Spring MVC 只导入动作电流的请求数据。因此,Spring MVC 运营效率将高于 Struts2。选择强调所有开始和所属线路。c) Spring MVC 实现了业务逻辑和观点的完全分离。业务逻辑处理后,它会返回一个字符串,与视图层的显示技
8、术没有任何关联的标志,然后通过显示技术显示相应ViewResolver 配置的字符串数据。B. Hibernate and MybatisMybatis 和 Hibernate 均为数据库持久层框架,有不同程度的 JDBC 的封装、与直接使用 JDBC 访问数据库相比,前两者开发效率大幅提高。1) HibernateHibernate 是一个以 JDBC 封装的对象关系映射框架 67。在开发业务逻辑时,程序员可以采用面向对象的编程,而不采用面向数据库编程,这样更明确的分工,能提高项目开发的效率。然而,学习 Hibernate 并不容易,而要精通绝非易事。它需要更丰富的经验和强大的功能为用户设计
9、 O / R 映射,并达到性能和对象模型的平衡。2) MybatisMybatis 是一个很好的半自动数据库持久层 ORM 框架,支持常见的 SQL 查询,存储过程和先进的映射以及其他操作 8。Mybatis 使用简单的 XML 或原始注释进行配置和映射,映射接口和 Java POJO,记录在数据库中。 Mybatis 的流程图如图 2 所示: 图 2. Mybatis 的工作流43. 基于 Spring MVC 和 Mybatis 实现的 MVC 框架基于 Spring MVC 和 Mybatis 实现的 MVC 框架,使用 Spring MVC 框架来说明了MVC 模式,Mybatis 作
10、为数据库持久性框架, Excel、JSP、PDF、jQuery 与 JSTL 结合形成视图技术,程序运行时 Logback 处理大量的日志。根据 MVC 层的思想,这一框架的实现中,控制器层包括核心控制器和业务控制器,视图层主要是通过 JSP 和 Excel 等来实现,模型层包括数据访问对象 (DAO)层、服务层、Bean 层,其中数据访问对象 (DAO)层使用 Mybatis 来访问数据库。图 3 显示了框架结构。图 3.结构框架A、结构Spring MVC 需要下面的配置 9:(1)在配置描述文件中配置核心控制器;(2)在 Spring MVC 配置文件中配置 ViewResolver;(
11、3) 由于注解的使用,需要启动组件扫描和激活Spring MVC 配置文件中的注释扫描函数;(4)在业务控制器进行 HandleMapping 配置。前两种类型的文件配置前需要 Mybatis 访问数据库。一个是主要的配置文件,配置数据库连接信息,加载实体的映射配置文件,以及定义实体的别名;另一个是实体映射配置文件,定义这个文件的名称空间参数类型结果类型 CRUD 操作,以及为每个操作指定一个不同的识别号。B、MyBatis 的工作流程5完成上述两种类型配置的文件后,可以用它们对数据库进行 CRUD 操作。以 “插入用户记录”为例,工作流程如下:a)MybatisConnectionFacto
12、ry.java: 建立SqlSessionFactory 实例Reader reader = Resources.getResourceAsReader(“mybatis-config.xml“);sqlSessionFactory=newSqlSessionFactoryBuilder().build(reader);b) BaseDAO.java: methodin这个类定义的基本操作。一个插入操作定义如下:public void insert(String operation,T o) SqlSession session =sqlSessionFactory.openSession()
13、;try session.insert(operation, o);mit(); finally session.close();c) UserDAO.java: 继承BaseDAORepositoryPublic class UserDAO extendsBaseDAOMethods needed to be written or added.d) UserServiceImpl.java: Call Method in UserDAO在UserServiceImpl 中插入一个实现类用户记录到数据库中。public void insertuser(User o) userDAO.inser
14、t(“User.insert“, o);64. COMAPRSIONS 框架的性能一个框架的性能如何可以从开发效率,操作效率、系统安全性、可维护性等判断。框架的一部分性能分析在本篇文章中已做阐述,基于 Spring MVC、经典框架 SSH10以及 Hibernate 和 Mybatis 的 MVC 框架运营效率将得到进一步的测试和分析。表 1. 在相同的环境和测试完成相同的任务使用不同的框架发出 60 次相同的请求执行来衡量每个请求过滤的处理时间。Hibernate 和 Mybatis 访问数据库的执行时间记录在 DAO 层。测试结果如表 2 所示:图 4.测试结果7表 2.平均运行时间的要
15、求据上图图表显示,明显地,基于 Spring MVC 和 Mybatis 的 MVC 框架的操作效率要远远高于 SSH,达到近 58.76%。Mybatis 操作效率高于 Hibernate14.06%。研究证明,基于 Spring MVC 和 Mybatis 的框架是一个相对轻量级的 MVC 框架。 基于 spring mvc 和 mybatis 的轻量级 mvc 框架研究85. 结论本文实现了基于 Spring MVC 和 Mybatis 轻量级 MVC 框架的设计。通过使用 Spring注释,配置文件的数量和复杂性降低。Spring MVC 方法可拦截请求,只有导入请求数据的方法,才有助
16、于提高操作效率。此外,Spring MVC 能完全分离业务逻辑和视图层。以Mybatis 作为持久层框架提高了访问数据库的发展速度和效率 ,为改善系统安全性、性能和可维护性带来更多的空间。6. 致谢这项工作是支持的国家基础研究程序(2006039),技术开发和合作(20120465)。参考文献1 L. GuangChun, W. Lu, and X. Hanhong, “A novel web application frame developed by MVC,” ACM SIGSOFT Software Engineering Notes, vol. 28, no. 2, p. 7, 20
17、03.2 J. LIU and J. DAI, “Research of lightweight Web application based on Spring MVC and iBATIS frameworks J,” Journal of Computer Applications, vol. 4, p. 26, 2006.3 M. Fisher, J. Ellis, and J. Bruce, JDBC API tutorial and reference. Addison-Wesley Professional, 2003.4 D. Brown, C. M. Davis, and S.
18、 Stanlick, Struts 2 in action. Dreamtech Press, 2008.5 R. Johnson, J. Hoeller, A. Arendsen, C. Sampaleanu, R. Harrop, T. Risberg, D. Davison, D. Kopylenko, M. Pollack, T. Templier, and others, “The spring framework-reference documentation,” Interface21.(accessed 30.04. 07), 2008.6 B. LIU and Z. WANG
19、, “Application of Office Automation Based on SSH Framework J,” Computer Technology and Development, vol. 1, p. 39, 2010.7 R. Johnson, “J2EE development frameworks,” Computer, vol. 38, no. 1, pp. 107110, 2005.8 C. Ho, “Using MyBatis in Spring,” in Pro Spring 3, Springer, 2012, pp. 397435.9 J. Jamae,
20、“Simplify Your Web App Development Using the Spring MVC Framework.” 2004.10 G.-J. Guo, D. Xie, and L.-P. Chen, “Design and implementation of teaching support system based on Struts-Spring-Hibernate integration architecture J,” Computer Engineering and Design, vol. 13, p. 25, 2009.Research on Lightweight MVC Framework Based on Spring MVC and Mybatis1