关于Spring MVC的简介以及使用
作者:陶艳芳
来源:《知音励志·社科版》2017年第01期
作者:陶艳芳
来源:《知音励志·社科版》2017年第01期
摘 要Spring MVC作为Spring MVC中的一部分,在实际工作中得到广泛的应用,在项目中合理使用,可以解决许多常见的问题,本文主要会简单概述什么是Spring MVC,如何通过代码的方式来配置,使用的场景,最后就是简述与过滤器的对比,通过详细的描述,你会对Spring MVC中的使用会有更深刻的理解。
【关键词】;Spring MVC;过滤器
1 什么是
在了解之前,我们首先要了解一些基本知识。我们都知道,当我们在浏览器中输入URL地址的时候,作为客户端的浏览器就会向对应的服务器发送一个请求,同时,浏览器中的Burl地址通过各种get或者post的方式向服务器提交数据,服务器在得到这些数据前,如果我们想对数据进行修改或者配置,那么这个时候我们就需要使用到,简单来说,就像
海关,如果你携带的东西不合标准,就扣下,符合了标准,才会让你通行。在Spring MVC中处理字符编码和权限管理的时候有很大的作用。
2 的工作原理
要想了解的工作原理,我们首先要对Spring MVC的整体工作流程有了解,下面我就简单介绍java反射的作用及应用场景Spring MVC的工作流程,在最新版的Spring MVC中,工作流程如下:当用户在浏览器地址栏输入一个Burl请求的时候,该请求首先会到配置文件中的DispatcherServlet,如果你没有配置,那么此时会报错,如果配置好了,那么下一步就是到HandlerMapping来到对应的HandlerAdapter,这样能到你自己写好的Handler,这里的Handler指的就是你用来处理该请求的类,当然,你可以通过注解的方式来配置。在这个Handler中,返回对象会是一个ModelAndView对象,这其中的Model表示的就是处理这个url请求得到的数据结果,这里的View就是服务器返回给该请求的响应界面,这样Spring MVC框架就会携带数据到对应的界面,从而展示结果给该URL请求。在了解了Spring MVC的工作流程后,我们就很好理解了,就是通过一些特殊的技术,在Burl请求发送到DispatcherServlet之间进行了拦截。
3 的实现
下面我们就通过几个步骤来实现一个简单的:
(1)写一个EncodInterceptor类并实现HandlerInterceptro接口,其中会有三个方法需要实现,分别是preHandle、postHandle、afterCompletion,在我们使用之前,需要在afterCompletion方法中的返回值设置为true,才会起作用。
(2)写好一个类就可以吗?当然不行,只写一个类,系统不会知道你这个要拦截什么请求,我们要在配置文件中添加对该类的配置,在配置文件中首先使用mvc:interceptor标签,然后在标签中通过bean标签将上面写好的类添加进去,其中bean标签的class属性表示的是类的包名点类名的形式。
通过上面的配置,在系统运行起来的时候,客户端向服务器端发送请求后,请求经历配置好的,默认会执行其中三个方法。至于这三个方法具体的作用,我们下面会谈论到,但是上面的配置,任意一个请求都会通过该,我们有什么方法让只拦截我们需要拦截的请求呢?答案是肯定有的,第二步的配置应该使用mvc:interceptors标签,然
后在标签中添加mvc:interceptors子标签,最后该标签中会有mvc:mapping标签,该标签中的path中就可以写你需要拦截的路径。
4 中的方法介绍
在上面我们通过HandlerInterceptor接口的方式实现时,默认会有三个方法需要实现:preHandle方法,postHandle方法,afterCompletion方法,下面一一介绍:preHandle方法较特殊,该方法在请求被响应前会被调用,返回值为boolean类型,表示的是是否要将请求拦截,如果我们在此方法中返回false,客户端发送过来的请求会被终止,不再执行下去,如果是true,请求才会继续运行。postHandle方法会在请求被处理之后调用,而其中的第三个参数可以用来显示视图以及数据,在该请求的中通过参数来修改该请求对应的响应视图,而该视图的优先级是大于对应的handler的。afterCompletion方法表示的是在请求执行完后会调用的方法,就像是PHP中的析构函数,最后才调用。
5 的使用场景
既然知道了如何使用,那么接下来,我们就要知道在什么情况下使用,常见的场景有如下几种:
(1)解决乱码问题:乱码在项目中经常遇到,或许是因为代码编辑工具的问题,也可能是字符编码问题,但有后,都可在请求发出之前统一设置编码。
(2)解决权限认证问题:很多项目如商城项目,必须用户登录后才能去购买商品,那么此时在请求发出前,需要判断用户是否已经登录,此时在中就可先判断用户是否登录,若未登录,就跳转到登录界面等。
6 与过滤器的对比与总结
相信学习过java Web的都知道过滤器,其实,和过滤器是基本相似的,但是还是有区别,下面来描述一下:首先,和过滤器的依赖是不同的,如果你使用的项目没有使用到Spring MVC框架,那么此时你就是不能使用,因为依赖框架容器,其本身基于java中的反射机制,而过滤器即使没有Spring MVC框架支持,也可以使用,因为过滤器是基于Servlet容器的,并通过了回调函数来使用。那么到此为止,对于的描述就结束了,可以处理我们在Web项目中请求的通用性的问题,合理使用,可以减少我们的代码工作量,同时项目也便于维护。
参考文献
[1](美)阿诺德,Ken-Arnold,等.Java程序设计语言[M].北京:人民邮电出版社,2006.
作者单位
邵阳学院 湖南省邵阳市 422000
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论