基于spring mvc和mybatis的轻量级mvc框架研究Word文档下载推荐.docx
《基于spring mvc和mybatis的轻量级mvc框架研究Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于spring mvc和mybatis的轻量级mvc框架研究Word文档下载推荐.docx(9页珍藏版)》请在冰点文库上搜索。
或有开发效率的优势,或有运营效率的优势,或在安全保障占据优势。
我们可以结合两个或两个以上的优势来创建一个相对有效、轻量级框架。
Spring MVC与控制器,模型对象,调度程序和程序处理对象彼此分离,使其更容易定制[2]。
此外,Mybatis数据库的持久层框架,封装Java数据库连接(JDBC)[3]以及操纵数据库流程简化,与Hibernate相比,其自由度和数据库的访问效率也已得到提高。
将SpringMVC和Mybatis这两种技术有机地结合,构建一个轻量级的MVC开发框架,不仅可以有效地提高系统开发的效率,简化发展的复杂性,也改善了系统的安全性,稳定性和鲁棒性。
本文分以下部分:
第一部分:
综述及比较Struts2和SpringMVC,第二部分:
介绍
Hibernate和Mybatis,第三部分:
基于SpringMVC和Mybatis系统执行方案,第四部分描述了不同框架间的比较,第五部分:
结论。
8
2.相关工作
A.MVC框架
因为MVC能理想地分离业务逻辑和观点,所以它已成为程序设计的发展趋势。
人们不断深研MVC,MVC框架持续发展。
目前,比较成熟和稳定的Struts MVC框架主要包括Struts、Struts2、Webwork、SpringMVC等。
以下介绍Struts2和SpringMVC。
(1)Struts2
Struts2是一个在Struts1和Webwork 合并的基础上形成的新的网络层应用程序框架
[4]。
Struts2以WebWork 为核心,主要是使用Java服务器页面(JSP)和Servlet技术,将
Servlet,JSP自定义标记和信息资源整合成一个统一的框架。
开发人员只需要开发相应的Action类,ActionFormBean和JSP组件,开发Struts框架应用项目。
(2)SpringMVC
Spring是一个轻量级容器框架,有控制反转(IoC)和面向方面编程(AOP)[5]的性能以及七个定义良好的模块。
七个模块中的Spring MVC,是一个全功能的轻量级程序可以实现MVC对Web应用构建。
Spring MVC完美实现MVC的核心概念和特点,通过简单配置就能动态配置组件。
Spring MVC是这样运作的:
当客户端发送一个HTTP请求时,核心控制器(DispatcherServlet)接收请求,根据URL请求调度搜索HandleMapping并找到到适当的控制器。
控制器调用适当的业务逻辑来处理请求,当处理过程完成后,返回视图名称和ModelAndView对象DispatcherServlet,最后由ViewResolver返回
ModelAndView并呈现相应的视图。
图1显示了SpringMVC的请求处理管道。
图1.SpringMVC的请求处理管道
(3)Struts2和SpringMVC的比较
a)运行效率:
Struts2的文件配置数量大于SpringMVC;
不过SpringMVC在使用过程中更简洁且开发效率比Struts2高。
b)运行效率:
Struts2的设计是基于类的请求,为类级拦截器,而SpringMVC的设计基于方法,为方法级拦截器;
Struts2导入所有的类行为属性,SpringMVC只导入动作电流的请求数据。
因此,SpringMVC运营效率将高于Struts2。
选择强调所有开始和所属线路。
c)SpringMVC实现了业务逻辑和观点的完全分离。
业务逻辑处理后,它会返回一个字符串,与视图层的显示技术没有任何关联的标志,然后通过显示技术显示相应
ViewResolver配置的字符串数据。
B.HibernateandMybatis
Mybatis和Hibernate均为数据库持久层框架,有不同程度的JDBC的封装、与直接使用JDBC访问数据库相比,前两者开发效率大幅提高。
1)Hibernate
Hibernate是一个以JDBC封装的对象关系映射框架[6][7]。
在开发业务逻辑时,程序员可以采用面向对象的编程,而不采用面向数据库编程,这样更明确的分工,能提高项目开发的效率。
然而,学习Hibernate并不容易,而要精通绝非易事。
它需要更丰富的经验和强大的功能为用户设计O/R映射,并达到性能和对象模型的平衡。
2)Mybatis
Mybatis是一个很好的半自动数据库持久层ORM框架,支持常见的SQL查询,存储过程和先进的映射以及其他操作[8]。
Mybatis使用简单的XML或原始注释进行配置和映射,映射接口和JavaPOJO,记录在数据库中。
Mybatis的流程图如图2所示:
图2.Mybatis的工作流
3.基于SpringMVC和Mybatis实现的MVC框架
基于Spring MVC和Mybatis实现的MVC框架,使用Spring MVC框架来说明了
MVC模式,Mybatis作为数据库持久性框架,Excel、JSP、PDF、jQuery与JSTL结合形成视图技术,程序运行时Logback处理大量的日志。
根据MVC层的思想,这一框架的实现中,控制器层包括核心控制器和业务控制器,视图层主要是通过JSP和Excel等来实现,模型层包括数据访问对象(DAO)层、服务层、
Bean层,其中数据访问对象(DAO)层使用Mybatis来访问数据库。
图3显示了框架结构。
A、结构
图3.结构框架
SpringMVC需要下面的配置[9]:
(1)在配置描述文件中配置核心控制器;
(2)在Spring
MVC配置文件中配置ViewResolver;
(3)由于注解的使用,需要启动组件扫描和激活SpringMVC配置文件中的注释扫描函数;
(4)在业务控制器进行HandleMapping配置。
前两种类型的文件配置前需要Mybatis访问数据库。
一个是主要的配置文件,配置数据库连接信息,加载实体的映射配置文件,以及定义实体的别名;
另一个是实体映射配置文件,定义这个文件的名称空间参数类型结果类型CRUD操作,以及为每个操作指定一个不同的识别号。
B、MyBatis的工作流程
完成上述两种类型配置的文件后,可以用它们对数据库进行CRUD操作。
以“插入用户记录”为例,工作流程如下:
a)MybatisConnectionFactory.java:
建立SqlSessionFactory实例
Readerreader=Resources.getResourceAsReader("
mybatis-config.xml"
);
sqlSessionFactory=new
SqlSessionFactoryBuilder().build(reader);
b)BaseDAO.java:
methodin这个类定义的基本操作。
一个插入操作定义如下:
publicvoidinsert(Stringoperation,To){SqlSessionsession=sqlSessionFactory.openSession();
try{session.insert(operation,o);
mit();
}finally{session.close();
}
c)UserDAO.java:
继承BaseDAO
@Repository
PublicclassUserDAOextendsBaseDAO<
User>
{
Methodsneededtobewrittenoradded.
d)UserServiceImpl.java:
CallMethodinUserDAO
在UserServiceImpl中插入一个实现类用户记录到数据库中。
publicvoidinsertuser(Usero){userDAO.insert("
User.insert"
o);
4.COMAPRSIONS框架的性能
一个框架的性能如何可以从开发效率,操作效率、系统安全性、可维护性等判断。
框架的一部分性能分析在本篇文章中已做阐述,基于Spring MVC、经典框架SSH[10]以及Hibernate和Mybatis的MVC框架运营效率将得到进一步的测试和分析。
表1.在相同的环境和测试完成相同的任务
使用不同的框架发出60次相同的请求执行来衡量每个请求过滤的处理时间。
Hibernate和Mybatis访问数据库的执行时间记录在DAO层。
测试结果如表2所示:
图4.测试结果
表2.平均运行时间的要求
据上图图表显示,明显地,基于SpringMVC和Mybatis的MVC框架的操作效率要远远高于SSH,达到近58.76%。
Mybatis操作效率高于Hibernate14.06%。
研究证明,基于SpringMVC和Mybatis的框架是一个相对轻量级的MVC框架。
5.结论
本文实现了基于SpringMVC和Mybatis轻量级MVC框架的设计。
通过使用Spring注释,配置文件的数量和复杂性降低。
SpringMVC方法可拦截请求,只有导入请求数据的方法,才有助于提高操作效率。
此外,SpringMVC能完全分离业务逻辑和视图层。
以
Mybatis作为持久层框架提高了访问数据库的发展速度和效率,为改善系统安全性、性能和可维护性带来更多的空间。
6.致谢
这项工作是支持的国家基础研究程序(2006039),技术开发和合作(20120465)。
参考文献
[1]L.GuangChun,W.Lu,andX.Hanhong,“AnovelwebapplicationframedevelopedbyMVC,”ACMSIGSOFTSoftwareEngineeringNotes,vol.28,no.2,p.7,2003.
[2]J.LIUandJ.DAI,“ResearchoflightweightWebapplicationbasedonSpringMVCandiBATISframeworks[J],”JournalofComputerApplications,vol.4,p.26,2006.
[3]M.Fisher,J.Ellis,andJ.Bruce,JDBCAPItutorialandreference.Addison-WesleyProfessional,2003.
[4]D.Brown,C.M.Davis,andS.Stanlick,Struts2inaction.DreamtechPress,2008.
[5]R.Johnson,J.Hoeller,A.Arendsen,C.Sampaleanu,R.Harrop,T.Risberg,D.Davison,D.Kopylenko,
M.Pollack,T.Templier,andothers,“Thespringframework-referencedocumentation,”Interface21.(accessed30.04.07),2008.
[6]B.LIUandZ.WANG,“ApplicationofOfficeAutomationBasedonSSHFramework[J],”ComputerTechnologyandDevelopment,vol.1,p.39,2010.
[7]R.Johnson,“J2EEdevelopmentframeworks,”Computer,vol.38,no.1,pp.107–110,2005.
[8]C.Ho,“UsingMyBatisinSpring,”inProSpring3,Springer,2012,pp.397–435.
[9]J.Jamae,“SimplifyYourWebAppDevelopmentUsingtheSpringMVCFramework.”2004.
[10]G.-J.Guo,D.Xie,andL.-P.Chen,“DesignandimplementationofteachingsupportsystembasedonStruts-Spring-Hibernateintegrationarchitecture[J],”ComputerEngineeringandDesign,vol.13,p.25,2009.
ResearchonLightweightMVCFrameworkBasedonSpringMVCandMybatis
1