学习笔记——拦截器与过滤器的区别;拦截器概述;拦截器中三个方法
2023-01-21
一、拦截器与过滤器的区别
1、过滤器(Filter)属于web服务器组件
(1)过滤器主要作用:过滤Servlet请求
(2)执行时机:两处执行时机(Servlet前、Servlet后)
2、拦截器(Interceptor)属于框架(springMVC)
(1)拦截器主要作用:拦截Controller请求
(2)执行时机:三处执行时机
①执行DispatcherServlet之后,Controller之前
②执行Controller之后,DispatcherServlet之前
③执行DispatcherServlet之后
二、拦截器概述
1、SpringMVC可以使用拦截器实现拦截Controller请求,用户可以自定义拦截器来实现特定功能
2、实现拦截器两种方式
(1)实现接口:HandlerInterceptor
(2)继承适配器类:HandlerInterceptorAdapter
3、拦截器中三个方法
(1)preHandler():这个方法在业务处理器处理请求之前被调用,可以在此方法中做一些权限的校验。如果程序员决定该拦截器对请求进行拦截处理后还要调用其他的拦截器,或者是业务处理器去进行处理,则返回true;如果程序员决定不需要再调用其他组件去处理请求,则返回false.
(2)postHandler():这个方法在业务处理器处理请求之后,渲染视图之前调用。在此方法中可以对ModelAndView中的模型和视图进行处理。
(3)afterCompletion():这个方法在DispatcherServlet完全处理完请求后被调用,可以在该方法中进行一些资源清理的操作。
三、实现拦截器步骤
1、实现接口:HandlerInterceptor
2、重写三个方法
@Component public class MyInterceptor implements HandlerInterceptor { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(" MyInterceptor==>preHandle " ); return true; } public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception { System.out.println(" MyInterceptor==>postHandle " ); } public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception { System.out.println(" MyInterceptor==>afterCompletion " ); } }
3、在springmvc.xml配置文件中,装配拦截器
<!-- 装配拦截器--> <mvc:interceptors> <ref bean="myInterceptor"></ref> </mvc:interceptors>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南