Spring Boot 拦截器
warning:
这篇文章距离上次修改已过261天,其中的内容可能已经有所变动。
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
方法中添加安全检查、日志记录、参数验证等逻辑。
评论已关闭