当前位置: 首页 > news >正文

湖南网站排名遵义网上制作网站

湖南网站排名,遵义网上制作网站,汕尾网站开发,查建设工程规划许可证在哪个网站精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、拦截器概述 拦截器(Interceptor)是Spring MVC框架中用于对请求进行预处理和后处理的组件,主要作用于Controller层。相…

精心整理了最新的面试资料和简历模板,有需要的可以自行获取

点击前往百度网盘获取
点击前往夸克网盘获取


一、拦截器概述

拦截器(Interceptor)是Spring MVC框架中用于对请求进行预处理和后处理的组件,主要作用于Controller层。相较于Filter(过滤器)作用于更底层,拦截器可以获取Spring的上下文信息,更适合处理与业务逻辑相关的请求拦截。

拦截器与过滤器的区别

  1. 作用层面:Filter属于Servlet规范,Interceptor属于Spring MVC组件
  2. 依赖关系:Interceptor依赖Spring容器,Filter不依赖
  3. 控制粒度:Interceptor可获取Controller对象和方法信息

二、拦截器核心方法

拦截器通过实现HandlerInterceptor接口实现,包含三个核心方法:

public interface HandlerInterceptor {// 请求到达Controller前执行default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {}// Controller执行后,视图渲染前执行default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {}// 请求完成后的回调(视图渲染完成)default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {}
}

三、实现自定义拦截器

步骤1:创建拦截器类

@Component
public class AuthInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler) throws Exception {String token = request.getHeader("Authorization");if (!validateToken(token)) {response.sendError(HttpStatus.UNAUTHORIZED.value());return false; // 中断请求}return true;}private boolean validateToken(String token) {// 实现具体的Token验证逻辑return true;}
}

步骤2:注册拦截器

创建配置类实现WebMvcConfigurer

@Configuration
public class WebConfig implements WebMvcConfigurer {@Autowiredprivate AuthInterceptor authInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(authInterceptor).addPathPatterns("/api/**") // 拦截路径.excludePathPatterns("/api/public/**"); // 排除路径}
}

四、典型应用场景

1. 接口权限验证

@Override
public boolean preHandle(...) {if (request.getSession().getAttribute("user") == null) {response.sendRedirect("/login");return false;}return true;
}

2. 请求日志记录

public class LoggingInterceptor implements HandlerInterceptor {private static final Logger logger = LoggerFactory.getLogger(LoggingInterceptor.class);@Overridepublic boolean preHandle(...) {logger.info("Request [{}] from {}", request.getRequestURI(),request.getRemoteAddr());return true;}@Overridepublic void afterCompletion(...) {logger.info("Response status: {}", response.getStatus());}
}

3. 接口耗时统计

@Override
public boolean preHandle(...) {request.setAttribute("startTime", System.currentTimeMillis());return true;
}@Override
public void afterCompletion(...) {long start = (Long) request.getAttribute("startTime");logger.info("Request took {} ms", System.currentTimeMillis() - start);
}

五、高级配置技巧

1. 多拦截器执行顺序

registry.addInterceptor(authInterceptor).order(1);
registry.addInterceptor(loggingInterceptor).order(2);
// 数值越小优先级越高

2. 路径匹配模式

  • /*:匹配单级路径
  • /**:匹配多级路径
  • /admin/**:匹配/admin下的所有路径

3. 排除静态资源

.excludePathPatterns("/static/**", "/public/**")

六、常见问题解决方案

Q1:拦截器不生效的可能原因

  1. 未添加@Configuration注解
  2. 路径匹配模式错误
  3. 未正确注入拦截器实例

Q2:如何获取Controller方法信息?

if (handler instanceof HandlerMethod) {HandlerMethod handlerMethod = (HandlerMethod) handler;Method method = handlerMethod.getMethod();// 获取方法上的注解等信息
}

Q3:异步请求的特殊处理
实现AsyncHandlerInterceptor接口处理异步请求

七、性能优化建议

  1. 避免在拦截器中处理复杂业务逻辑
  2. 合理设置拦截路径,减少不必要的拦截
  3. 使用ThreadLocal存储请求上下文信息

http://www.dtcms.com/a/594981.html

相关文章:

  • 网站建设一般要多大空间wordpress 按别名
  • 不写代码做网站手机网站建站工作室
  • 淘宝客网站模板下载资讯文章网站模板
  • 外贸网站建设公司效果1688seo优化是什么
  • 定制企业网站建设网页制作作业100例
  • 自己做个网站需要些什么站长工具seo综合查询问题
  • 炽乐清网站建设荣耀商城
  • MCP入门:让AI与外部世界真正连接
  • 贵州省城乡与住房建设厅网站专业网站建设微信官网开发
  • 网站开发安全文档网址大全最新版
  • 低多边形生成网站做网站 一级 二级
  • arm day1
  • 景安网站上传完还要怎么做成品影视app开发工具
  • LoRa 与 LoRaWAN 技术解析:物理层原理、网络架构与典型物联网应用场景
  • 网站开发的交付文档建网站可行性分析
  • 免费推广网站地址大全链接制作软件
  • 做网站项目收获东莞做阀门的网站
  • 动漫电影做英语教学视频网站有哪些余姚网站建设找哪家
  • 一般做网站服务器的cpu鹤壁市淇县网站建设
  • 襄垣城乡建设管理局的网站重庆建筑工程职业学院
  • 产品导航网站源码wordpress能做企业站吗
  • 网站建站需要什么软件蓝色网站导航
  • 长春火车站停车场24小时收费标准贵城乡建设官方网站
  • 做微网站多少钱高端前端开发
  • 怎样查看别人的网站是怎么建设上海最新新闻头条
  • 网站产品页如何做优化兰州最好的网站建设公司
  • 怎么看一个网站是不是仿站wordpress 文章二维码
  • 做文案公众号策划兼职网站外贸经济平台代销到哪里买
  • 网站建设与管理课程代码做销售在哪个网站找客户端
  • 备案个人可以做视频网站吗学网络营销好就业吗