Spring Boot 拦截器
    		       		warning:
    		            这篇文章距离上次修改已过426天,其中的内容可能已经有所变动。
    		        
        		                
                Spring Boot 中的拦截器可以通过实现 HandlerInterceptor 接口来创建。以下是创建一个简单的拦截器的步骤:
- 创建一个类实现 
HandlerInterceptor接口。 - 覆盖 
preHandle方法来在请求处理之前进行操作。 - (可选)覆盖 
postHandle方法来在请求处理后进行操作。 - (可选)覆盖 
afterCompletion方法来在请求完全结束后进行操作。 - 注册拦截器。
 
下面是一个简单的拦截器示例:
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
@Component
public class SimpleInterceptor implements HandlerInterceptor {
 
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 在请求处理之前执行的代码
        System.out.println("Pre Handle");
        // 如果返回 true,则继续请求处理;否则,停止请求处理。
        return true;
    }
 
    @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");
    }
}注册拦截器的步骤:
- 创建一个配置类实现 
WebMvcConfigurer接口。 - 覆盖 
addInterceptors方法来注册拦截器。 
import org.springframework.beans.factory.annotation.Autowired;
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 {
 
    @Autowired
    private SimpleInterceptor simpleInterceptor;
 
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 添加拦截器,并设置拦截的路径
        registry.addInterceptor(simpleInterceptor)
                .addPathPatterns("/**"); // 拦截所有路径
                //.excludePathPatterns("/login", "/error"); // 排除某些路径
    }
}以上代码创建了一个简单的拦截器,并在每个请求处理前打印了一条消息。在实际应用中,你可以在 preHandle 方法中添加安全检查、日志记录、参数验证等逻辑。
评论已关闭