【Spring MVC】Spring MVC拦截器(Interceptor)
    		       		warning:
    		            这篇文章距离上次修改已过425天,其中的内容可能已经有所变动。
    		        
        		                
                Spring MVC 拦截器(Interceptor)是一种可以拦截控制器请求的组件,用于在请求处理之前、之中和之后进行一些处理。
以下是一个简单的Spring MVC拦截器的示例:
- 创建拦截器类实现 
HandlerInterceptor接口: 
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class SimpleInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 请求处理之前进行的操作
        System.out.println("Pre Handle");
        return true; // 如果返回false,则停止流程,api不会被调用
    }
 
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        // 请求处理之后进行的操作
        System.out.println("Post Handle");
    }
 
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        // 请求完全处理完成后进行的操作
        System.out.println("After Completion");
    }
}- 在Spring MVC的配置中注册拦截器:
 
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 SimpleInterceptor())
                .addPathPatterns("/**"); // 这里可以配置拦截的路径
                //.excludePathPatterns("/login"); // 这里可以配置排除的路径
    }
}在上述配置中,addPathPatterns("/**") 表示拦截所有的请求,你可以根据需要配置拦截的路径。excludePathPatterns("/login") 表示排除对登录接口的拦截。
以上代码实现了一个简单的Spring MVC拦截器,并在所有路径下拦截请求,在请求处理的不同阶段执行了自定义的操作。
评论已关闭