https://www.iamshuaidi.com/26912.html
在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 {
// 在请求完全处理完毕(包括视图渲染)之后执行的操作
}
}
Java
Copy
配置拦截器:接下来,你需要在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"); // 排除登录和错误页面
}
}
Java
Copy
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
Copy
在XML配置中,你可以使用<mvc:interceptor>
标签为每个拦截器定义不同的路径模式和排除模式。每个<mvc:interceptor>
内部可以有一个<bean>
来指定拦截器类。
启动应用:
最后,启动你的Spring MVC应用。现在,每当有请求匹配到你配置的路径模式时,你的拦截器就会被触发,并按照你在拦截器类中定义的逻辑执行操作。