简述SpringMvc怎么配置拦截器?
在Spring MVC中,拦截器(Interceptor)用于在请求处理之前或之后执行特定的操作,如日志记录、权限检查、性能监控等。要配置Spring MVC拦截器,你需要执行以下步骤:
- 创建拦截器类:
首先,你需要创建一个实现了HandlerInterceptor
接口的拦截器类。这个接口包含了三个方法:preHandle
、postHandle
和afterCompletion
,分别在请求处理之前、请求处理之后(但在视图渲染之前)和请求完全处理完毕(包括视图渲染)之后被调用。import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 在请求处理之前执行的操作 // 如果返回false,则请求中断,不会继续执行后续操作 return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 在请求处理之后,视图渲染之前执行的操作 } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 在请求完全处理完毕(包括视图渲染)之后执行的操作 } }
- 配置拦截器:
接下来,你需要在Spring MVC的配置文件中注册你的拦截器。如果你使用的是Java配置,则可以通过继承WebMvcConfigurer
接口并重写addInterceptors
方法来实现。如果你使用的是XML配置,则可以在<mvc:interceptors>
标签内部配置你的拦截器。Java配置示例:
import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyInterceptor()) .addPathPatterns("/**") // 拦截所有请求 .excludePathPatterns("/login", "/error"); // 排除登录和错误页面 } }
XML配置示例:
<mvc:interceptors> <bean class="com.example.MyInterceptor"/> <mvc:interceptor> <mvc:mapping path="/**"/> <mvc:exclude-mapping path="/login"/> <mvc:exclude-mapping path="/error"/> <bean class="com.example.AnotherInterceptor"/> </mvc:interceptor> </mvc:interceptors>
在XML配置中,你可以使用
<mvc:interceptor>
标签为每个拦截器定义不同的路径模式和排除模式。每个<mvc:interceptor>
内部可以有一个<bean>
来指定拦截器类。 -
启动应用:
最后,启动你的Spring MVC应用。现在,每当有请求匹配到你配置的路径模式时,你的拦截器就会被触发,并按照你在拦截器类中定义的逻辑执行操作。