自定义拦截器
介绍
拦截器是Java Web框架(如Spring MVC)中的一个组件,用于在请求 到达处理程序之前、处理器返回处理之后或视图渲染之前执行某些操作。
拦截器可以用于执行日志记录、性能监控、身份验证、授权、请求转换等操作。拦截器通常是通过实现特定接口或注解来实现的,例如Spring MVC中的HandlerInterceptor接口。
实现拦截器的步骤
以Spring MVC为例
一、自定义类实现HandlerInterceptor接口
public class MyInterceptor implements HandlerInterceptor {
}
二、重写方法
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 在请求处理(Controller)之前执行的操作
// 可以在这里进行身份验证、授权等操作
String num = request.getParameter("num");
if (num != null) {
System.out.println("拦截器放行");
return true;
}
System.out.println("拦截器拦截");
return false; // 返回true表示继续处理请求,返回false表示中断请求处理,后续流程不进行
}
@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 {
// 在整个请求处理结束之后执行的操作
// 可以在这里进行资源清理等操作
}
三、添加拦截器配置
自定义的拦截器定义以及重写完方法之后,拦截器并不会生效,需要添加到WebMvcConfigurer中才会生效,在WebMvcConfigurer接口中重写addInterceptors方法添加拦截器配置。
@Configuration
public class MvcConfig implements WebMvcConfigurer {
// 添加Mvc配置
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor());
}
}
验证:
①定义一个测试Controller
@RestController
@RequestMapping("/mvc")
public class MvcController {
@GetMapping("/one")
public String getInfo() {
return "Hello Word";
}
}
②首先访问路径不带num参数

此时已经可以说明我们自定义的拦截器成功生效
③访问路径带num参数

本文介绍了如何在Spring MVC中实现自定义拦截器,包括介绍拦截器的作用、实现步骤和验证过程。拦截器可用于日志记录、性能监控、身份验证等功能。实现包括实现HandlerInterceptor接口、重写相关方法,并在配置中添加拦截器。
213

被折叠的 条评论
为什么被折叠?



