标题 | 基于Spring MVC+JDBCTemplate的Web系统的研究与应用 |
范文 | 赵璘 王红霞
摘 要:Spring MVC以其松散耦合的特性在业内被广泛使用,JDBCTemplate对数据库的操作在JDBC层面做了深层次的封装,简化了项目中繁琐的JDBC操作。Spring MVC与JDBCTemplate的有机结合,优化了软件开发的过程。在分析Spring MVC与JDBCTemplate的技术要点、工作原理的基础上,通过实例,展示了Spring MVC+JDBCTemplate的整合应用给项目带来的便利。 关键词:SpringMVC;JDBCTemplate;封装;整合 中图分类号:TP311.5 文献标识码:A 1 引言(Introduction) 在Web应用中,表现层是Web应用不可忽略的重要组成部分,Spring为表现层提供了一个十分优秀的Web框架——Spring MVC。与大多数其他的Web框架一样的设计理念,都是遵循MVC的思想架构。Spring MVC通过注解的方式,让POJO成为处理请求的控制器,无需实现任何的接口[1]。另外,Spring MVC最大的优点就是松散耦合,更具有灵活性和可扩展性[2]。 JDBC已经能够满足大部分用户最基本的对数据库的需求,但是在使用JDBC时,应用必须自己来管理数据库资源。JDBCTemplate正是为了减少JDBC繁琐的代码而设计出来的。Spring对数据库操作需求提供了很好的支持,并在原始JDBC基础上,构建了一个抽象层,提供了许多使用JDBC的模板和驱动模块,为Spring应用操作关系数据库提供了更大的便利[3-6]。Spring封装好的模板,封装了数据库存取的基本过程,方便使用。 2 Spring MVC的技术要点(Technical points of Spring MVC) 2.1 Spring MVC的组件 (1)DispatherServlet:前置控制器,负责接收并处理所有的web请求,根据HandlerMapping找到具体的Controller,由Controller完成具体的处理逻辑。 (2)HandlerMapping:负责处理web请求和具体的Controller之间的映射关系匹配。 (3)Controller:DispatherServlet的次级控制器,web请求的具体处理者。DispatherServlet获得HandlerMapping的返回结果后,调用Controller的方法处理前端发出的请求,处理结果通过ModelAndView对象返回。 (4)ViewResolver:用来处理视图名与具体的View实例之间的映射对应关系。根据ModelAndView中的视图名查找相应的View实现类,然后将查找的结果返回给DispatcherServlet,DispatcherServlet最终会将ModelAndView中的模型数据交给返回的View处理最终的视图渲染工作。 (5)View:为支持多种视图技术而存在,统一抽象视图的生成策略,根据模型数据输出具体的视图。 2.2 Spring MVC的体系架构 Spring MVC是基于Model 2实现的,Model 2是MVC模型在Java Web应用中的一个变体。Spring MVC的底层机制是MVC,是利用处理器分离模型、视图和控制达到松散耦合的效果。Spring MVC的框架模型如图1所示。 从接收请求开始,到返回响应为止,Spring MVC框架中的各个组件各司其职,通力合作,有序配合地完成各自的工作。在整个Spring MVC框架中,DispatcherServlet处于核心领导地位。它负责组织和协调不同的组件完成从请求到响应的任务。其处理请求的整体过程如下: (1)整个过程从客户端发出一个HTTP请求开始,Web应用服务器接收请求,如果与DispatcherServlet的请求路径相匹配,Web容器就将该请求转发给DispatcherServlet处理。 (2)DispatcherServlet接收到這个请求后,将根据请求的信息及HandlerMapping的配置找到处理请求的处理器,即Handler。注意:Spring MVC中并没有定义Handler接口。 (3)当DispatcherServlet根据HandlerMapping得到对应当前请求的Handler后,通过HandlerAdapter对Handler进行封装。再通过统一的适配器接口调用Handler(HandlerAdapter是Spring MVC的框架级接口)。 (4)处理器完成业务处理后,返回一个ModelAndView给DispatcherServlet,ModelAndView包含视图逻辑的名称和模型数据的信息。 (5)ModelAndView中包含的是逻辑视图名,不是真正意义的视图对象。DispatcherServlet通过ViewResolver完成从逻辑视图名到真实视图对象的解析。 (6)当得到真正的视图对象后(View),DispatcherServlet就使用这个View对象对ModelAndView中的模型数据进行视图渲染。 (7)最后客户端得到的响应信息可能是一个页面(HTML、JSP),也可能是XML、JSON串或其他不同的媒体形式。 2.3 Spring MVC配置 (1)配置DispatcherServlet DispatcherServlet在web.xml中进行配置,它让Spring MVC能够生龙活虎。基本代码如下所示:
3 JDBCTemplate的应用(The application of JDBCTemplate) 由于JDBC API过于底层,直接进行JDBC编写数据库程序,需要完成数据库代码(SQL)、还需要编写获取JDBC连接、异常处理、释放连接资源等代码,实在是过于繁琐。Spring JDBC通过模板和回调机制简化了JDBC编写数据库程序的复杂度。借助JDBCTemplate,程序员只需要编写处理业务的核心SQL语句即可。 3.1 JDBCTemplate配置 在Spring的配置文件ApplicationContext.xml中进行数据源的配置。以下代码以mariadb数据库为例,代码如下: destroy-method="close"p:driverClassName="org.mariadb.jdbc.Driver" p:url="dbc:mysql://localhost:3306/asms?useUnicode=true&characterEncoding=UTF-8" p:username="asms" p:password="asms"/> 3.2 JDBCTemplate中的常用方法 (1)update()方法用于执行数据库表的新增、修改、删除的SQL语句。 (2)batchUpdate()方法用于执行批处理相关的SQL语句。 (3)query()方法及queryForXXX()方法:用于执行查询相关的SQL语句。其中queryForXXX()根据返回对象类型进行方法的选择(queryForObject,queryForList等)。 (4)call()方法用于执行存储过程、函数相关的SQL语句。 3.3 JDBCTemplate实例 在代码中,以向表nps_classes中插入数据为例。首先定义SQL语句,然后使用JDBCTemplate执行该SQL。 privatestaticfinal String SQL_ADD_CLASS="insert into nps_classes(classid,classname,classdesc,batid,apid) values(?,?,?,?,?)"; publicvoidaddClass(Map map) { Object[]params=MapUtil.getObjectArrayFromMap(map, "classid,classname,classdesc, batid,apid"); jt.update(SQL_ADD_CLASS,params); } 4 應用实例(Application instance) 运用实际案例介绍Spring MVC在项目中的实现过程。基本功能说明:毕业生首次登录系统要完成自主注册功能,该功能分为两步完成:第一步,通过姓名和身份证号在毕业生信息中进行校验,校验成功后进入第二步,校验失败重新填写姓名和身份证号进行校验。第二步:在第一步校验成功后,需要填写姓名拼音、电子邮箱、验证码、密码、确认密码提交至系统保存,保存成功即毕业生注册成功。 (1)在注册第二步,填写相应信息后,点击“下一步”按钮,向服务端发送post请求,如图2所示。 (2)分发器得到客户端请求后,通过控制器映射匹配到负责业务逻辑处理的控制器,并将请求转发给该控制器。该控制器所在的Java类为StuRegisterController.java,代码如下: @RequestMapping(value="/stu/registerasmsstep2.do")
public Map throwsIOException { Map boolean flag=false; flag=this.registerService.updateregisterasmsstep2(studentno,stupwd,studentnameen); jsonrslt.put("flag",flag); returnjsonrslt; } (3)控制器调用RegisterServiceImpl处理注册第二步的业务逻辑,其处理方法如下: @Override publicboolean updateregisterasmsstep2(String studentno, Stringstupwd,Stringstudentnameen) { boolean flag=false; Map rmParam.put("studentno",studentno); rmParam.put("stupwd",stupwd); rmParam.put("studentnameen",studentnameen); int i=jdbctemplate.update(sql.updateregisterasmsstep2(),rmParam); if(i==1){ flag=true; } return flag; } (4)由于业务要求第一步注册校验时已将毕业生信息插入到数据表中,所以第二步注册仅仅是更新部分数据信息,RegisterServiceImpl中的JDBCTemplate更新数据表的信息,调用SQL如下: public String updateregisterasmsstep2() { return"update ASMS_STUREGINFO set stupwd=:stupwd,studentnameen=:studentnameen where studentno=:studentno"; } (5)响应返回至客户端获取flag数据,则显示“注册成功,请使用学号和密码进行系统登录”信息,如图3所示。 5 结论(Conclusion) 本文分析了Spring MVC的技术要点和JDBCTemplate的应用。Spring MVC技術要点包括组件、框架模型和配置,JDBCTemplate的应用包括配置和常用方法。最后通过实际项目,介绍了web请求在Spring MVC中的应用,以及JDBCTemplate如何操作数据表。 综上得出:Spring MVC大大简化了程序开发的繁琐度,JDBCTemplate降低了编写数据库程序的复杂度。Spring MVC+JDBCTemplate的组合值得在Web应用软件开发中广泛使用。 参考文献(References) [1] 张文宇,许明健,薛昱.论spring的零配置与XML配置[J].计算机系统应用,2015,24(2):270-275. [2] 周燕玲.Spring MVC框架开发WEB应用程序的探索与研究[J].科技广场,2016(6):25-28. [3] 叶雯.基于Spring MVC框架的Web登录模块的设计与实现[J].电脑知识与技术,2013(35):7983-7984. [4] Zhang Chao,Zhao Ping,He Jing.Design and Implementation of the Control System Software Based on MVC Model[J].High Power Laser and Particle Beams,2013(S1):91-95. [5] TianPengfei,Tian Di,Yang Guang.Design and Implementation of LIBS Software Based on MVC Architecture[J].Journal of Jilin University(Engineering and Technology Edition),2016(1):242-245. [6] Lin HC,et al.Development of a Real-Time Clinical Decision Support System upon the Web MVC-Based Architecture for Prostate Cancer Treatment[J].BMC Med Inform DecisMak,2011(926):3306-3309. 作者简介: 赵 璘(1981-),男,硕士,助教.研究领域:软件工程. 王红霞(1982-),女,硕士,工程师.研究领域:计算机软件与 理论.
|
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。