拦截器和过滤器的区别
https://www.cnblogs.com/panxuejun/p/7715917.html
1、过滤器和拦截器的区别
1 2 3 4 | 1 、拦截器不依赖与servlet容器,过滤器依赖与servlet容器。也就是说Filter 在服务启动的时候就初始化好了。 2 、拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。 3 、拦截器是spring容器的,是spring支持的.没有初始化等方法生命周期和filter 不一样。 4 、filter和拦截器都可以拦截asp页面、图片、视频。 |
2、拦截器的的请求流程
从这个图上可以看到filter的触发时机和拦截器的触发的时机不同
2.1 preHandle 如果返回false 那么请求就不会到后台的java服务了
@MyAnotation @RequestMapping("/hello1") @ResponseBody public String hello1(){ String name = myService.sayHello("tomcat"); System.out.println(name); return name; } public class SourceAccessInterceptor implements HandlerInterceptor { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("进入拦截器了"); // 反射获取方法上的LoginRequred注解 HandlerMethod handlerMethod = (HandlerMethod)handler; MyAnotation myAnotation = handlerMethod.getMethod().getAnnotation(MyAnotation.class); if(myAnotation == null){ return true; } // 有LoginRequired注解说明需要登录,提示用户登录 response.setContentType("application/json; charset=utf-8"); response.getWriter().print("你访问的资源需要登录"); return false; } public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
3、多个filter的请求的流程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~