SpringMVC拦截器基于xml和注解方式的两种配置

it2025-04-25  11

首先来看一下Spring拦截器和过滤器的所应有的位置:

过滤器是在到达DispatcherServlet之前进行过滤; 拦截器是经过DispatcherServlet后进行拦截。

三种拦截器:
prehandler: 请求通过DispatcherServlet后,到达后端Handler时进行拦截;postHandler: 后端Handler处理完请求返回DispatcherServlet前进行拦截;afterHandler: 视图解析器View出来完请求返回DispatcherServlet前进行拦截;

一、注解方式:

1.定义拦截器类,继承HandlerInterceptorAdapter:

public class Interceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { /* 这里面写一些到达Controller之前需要进行拦截的代码 */ //true表示放行,false表示拦截 return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { super.postHandle(request, response, handler, modelAndView); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { super.afterCompletion(request, response, handler, ex); } } 编写SpringMVC配置类,将自定义拦截器添加到配置中: public class WebMvcConfig extends WebMvcConfigurerAdapter { @Override public void addInterceptors(InterceptorRegistry registry) { //创建自定义的拦截器 Interceptor interceptor = new Interceptor(); //添加拦截器 registry.addInterceptor(interceptor) //添加需要拦截的路径 .addPathPatterns(""); } }

二、xml方式:

1.在springmvc-config.xml配置文件中添加如下配置:

<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="需要拦截的路径"/> <bean class="自定义interceptor全路径名"> </mvc:interceptor> </mvc:interceptors>
最新回复(0)