Spring MVC框架的拦截器(Interceptor)

原本拦截器只不过是Spring MVC提供的小功能,很简单,简单到令人发指!!!
我原本只是想话一个半个小时的稍微实现一下就可以了。
本着学习就要炫耀的原则·,我发了一条说说
在这里插入图片描述
结果由于长时间没有实操框架,为了稍微复习一下,基本上都是手打,连文档都没怎么查,结果呢。。。。。。
在这里插入图片描述
事实上,由于我在Web.xml文件中部署DispatcherServlet时直接粘了文档,和我建立的Spring MVC配置文件名不一样,疯狂的伍佰。。。。。。
我到四点才完事。。。。。。
所以完事的时候,我又去考研群里签了个到,激励一下广大考研学子们要闻鸡起舞。

好了,废话不多说,关于Spring MVC的拦截器,主要就是用于拦截用户的请求并作出相应处理的,通常应用在权限验证、记录请求信息的日志、判断用户是否登录等功能。
定义一个拦截器有两种方式,一种是通过实现HandlerInterceptor接口或者继承HandlerInterceptor接口的实现了,另一种是实现WebRequestInterceptor接口或者及继承该接口的实现类。
在这里我演示第一种方式。
由于我用的是maven对象模型,所以需要的jar包直接放在pom文件下就行了。这里需要的Spring的四大核心jar包,commons-logging、spring-web、spring-webmvc。

一、继承HandlerInterceptor接口有三个方法要实现
1.public boolean preHandle (HttpServletRequest request,HttpServletResponse response,Object handler)throws Exception{}
postHandle 方法在控制器处理请求之前执行,其返回值表示是否中断后续操作,返回true表示继续向下执行。
2.public void postHandle (HttpServletRequest request,HttpServletResponse response,Object handler,ModelAndView modelAndView)throws Exception {}
postHandle方法在控制器的处理请求方法调用之后、解析视图之前执行。
3.public void afterCompletion (HttpServletRequest request,HttpServletResponse response,Object handler,Exception exception)throws Exception{}
afterCompletion 方法在控制器的处理请求方法执行完成后执行,即视图渲染结束后执行,可以通过此方法实现一些资源清理、记录日志信息等工作。
在这里插入图片描述
为了演示多个拦截器的执行顺序,我这里建了另一个一毛一样的拦截器

二、建立控制器,这里没什么好注意的,就是平常建立就可以。
建立的Controller

三、创建配置文件springmvc-servlet.xml
这里因为需要配置拦截器,所以需要在标签里添加三个新的站点
xmlns:mvc=“http://www.springframework.org/schema/mvc
xsi:schemaLocation=" http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd”
然后就是配置文件中要写的内容:

<bean id="viewResolver"
	class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix">
		<value>/WEB-INF/jsp/</value>
	</property>
	<property name="suffix">
		<value>.jsp</value>
	</property>
</bean>
<!-- <mvc:interceptors>元素用于配置一组拦截器-->
<mvc:interceptors>
<!-- <mvc:interceptor>用于配置单个拦截器 -->
	<mvc:interceptor>
	<!-- <mvc:mapping>用于配置拦截器作用的路径,该路径在其属性path中定义,这里/**表示拦截所有路径 -->
		<mvc:mapping path="/**" />
		<bean class="interceptor.TestInterceptor"></bean>
	</mvc:interceptor>
	<mvc:interceptor>
		<mvc:mapping path="/**" />
		<bean class="interceptor.TestInterceptor1"></bean>
	</mvc:interceptor>
</mvc:interceptors>
在中有一个子元素可以用来配置不需要拦截的内容。 **四、web.xml文件中进行部署**
<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
         <param-name>contextConfigLocation</param-name>
         <!-- 我就在这里犯得纯 -->
         <param-value>classpath:springmvc-servlet.xml</param-value>
     </init-param>
     
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

五、在index.jsp中写个超链接,让拦截器拦截请求,控制器处理。
index.jsp
test.jsp
六、Run On Server
在这里插入图片描述
关于多个拦截器的执行流程,当有多个拦截器同时工作时,这时它们的preHandle 方法将按照配置文件中拦截器的配置顺序执行,而它们的postHandle和afterCompletion方法则按照配置顺序的反序执行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值