SpringMVC教程之拦截器如何配置的

一、前言

前面一节我们讲到了自定义一个拦截器,我们看一下我们是如何配置拦截器的

<mvc:interceptors>
	<bean class="com.queen.springmvc.handlers.FirstInterceptorHandler"></bean>
</mvc:interceptors>

这么配置有一个特点:就是所有的目标方法前后都会调用该拦截器。那如果我们只想针对处理器的某一个方法调用拦截器,这时候我们该怎么处理呢?

二、案例

♦自定义一个新的拦截器

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
/**
 * @since 2017-11-25
 * @author queen
 *
 */
public class SecondInterceptorHandler implements HandlerInterceptor{

	@Override
	public boolean preHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler) throws Exception {
		System.out.println("SecondInterceptorHandler preHandle...");
		return true;
	}

	@Override
	public void postHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		System.out.println("SecondInterceptorHandler postHandle...");
	}

	@Override
	public void afterCompletion(HttpServletRequest request,
			HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		System.out.println("SecondInterceptorHandler afterCompletion...");
	}

}

♦定义个一个新的目标方法

SpringMVC教程之拦截器如何配置的的照片 - 1

♦在springmvc配置文件中加入下面的代码,路由为”/myhandler/hello”的url会被拦截到指定的拦截器中

<mvc:interceptors>
		<bean class="com.queen.springmvc.handlers.FirstInterceptorHandler"></bean>
		<mvc:interceptor>
			<mvc:mapping path="/myhandler/hello"/>
			<bean class="com.queen.springmvc.handlers.SecondInterceptorHandler"></bean>
		</mvc:interceptor>
</mvc:interceptors>

上面<mvc:interceptor></mvc:interceptor>包裹的信息:SecondInterceptorHandler只会会针对/myhandler/hello这个请求路径拦截,别的请求过来不会拦截。

♦启动运行

SpringMVC教程之拦截器如何配置的的照片 - 3

由上图可以看到:当我们访问路径是http://localhost:8080/myhandler/hello的时候,两个拦截器都起了作用。

SpringMVC教程之拦截器如何配置的的照片 - 5

由上图可以看到:当我们访问路径是http://localhost:8080/myhandler/close的时候,只有FirstInterceptorHandler拦截器都起了作用,SecondInterceptorHandler拦截器没有起作用,因为SecondInterceptorHandler拦截器只针对于链接为/myhandler/hello这个的请求路径。

当<mvc:mapping path=”/myhandler/hello”/>配置不同的匹配规则,拦截器起得效果是不一样的,大家可以尝试着看一下。

至此,我们关于SpringMVC教程之拦截器的配置介绍完毕。想要了解更多关于SpringMVC开发的教程,请参考http://www.marsitman.com/springmvc
博客地址:http://www.marsitman.com/springmvc/springmvc-set-interceptor.html
版权声明:本文为博主原创文章,允许转载,但转载必须标明出处。

 

 

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!



点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注