博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
过滤器和拦截器的区别
阅读量:4949 次
发布时间:2019-06-11

本文共 1821 字,大约阅读时间需要 6 分钟。

Spring 的拦截器与Servlet的过滤器有相似之处,二者都是AOP编程思想的体现,都可以实现权限的检查,日志记录等

  ① 使用范围不同:  Filter是Servlet规范规定,只能用在web程序中,而拦截器,除了web程序,也可以用于Application,Swing程序中

  ②  规范不同  Filter是Servlet规范中定义的  是Servlet容器支持的,而拦截器是在spring容器内,是Spring框架支持的

  ③  使用资源不同  同其他代码块一样,拦截器也是sprring的组件,归spring管理,配置spring文件中,因此能使用Spring中任何资源,对象,例如对象,数据源,事务管理,通过IOC注入到拦截器即可:Filter则不能

  ④  深度不同,Filter只在Servlet前后起作用,而拦截器能够深入到方法前后,异常抛出前后,spring架构程序,优先使用拦截器

详细的区别:

  ①:  拦截器是基于java的反射机制,而过滤器是基于函数回调

  ②: 拦截器不依赖servlet容器,过滤器依赖servlet容器

  ③ 拦截器只能对action请求起作用,过滤器对所有请求起作用

  ④  拦截器可以访问action上下文,值栈里的对象,而过滤器不能

  ⑤  在action的生命周期中,拦截器可以多次调用,而过滤器只能在容器的初始化时被调用一次

  ⑥拦截器可以获取IOC容器各个bean,而过滤器不能,

  过滤器

@Override    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {        System.out.println("before...");        chain.doFilter(request, response);        System.out.println("after...");    }

拦截器

@Override    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {        System.out.println("preHandle");        return true;    }    @Override    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {        System.out.println("postHandle");    }    @Override    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {        System.out.println("afterCompletion");    }

 

 

SpringMVC的机制是由同一个Servlet来分发请求给不同Controller,其实这一步实在Servlet的service()方法中执行

 

原文链接  https://www.cnblogs.com/panxuejun/p/7715917.html

java中getAttribute和getParameter的区别

  getAttribute表示从request范围获取属性值,必须先set设置属性,才能获取到值

getParameter表示接受参数,参数为页面提交的数据,包括表单中数据,或者url后参数

 

转载于:https://www.cnblogs.com/developerxiaofeng/p/9078332.html

你可能感兴趣的文章
ResultSet 可滚动性和可更新性
查看>>
VS2013 C++代码运行问题
查看>>
iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile?
查看>>
LUOGU P2986 [USACO10MAR]伟大的奶牛聚集Great Cow Gat…
查看>>
toad for oracle中文显示乱码
查看>>
scala的REPL shell的调用
查看>>
SQL中Group By的使用
查看>>
Mybatis映射原理,动态SQL,log4j
查看>>
哪个微信编辑器比较好用?
查看>>
错误org/aopalliance/intercept/MethodInterceptor解决方法
查看>>
Pylint在项目中的使用
查看>>
使用nginx做反向代理和负载均衡效果图
查看>>
access remote libvirtd
查看>>
gdb调试中出现No symbol table is loaded. Use the "file" command.问题
查看>>
(4) Orchard 开发之 Page 的信息存在哪?
查看>>
ASP.NET中 GridView(网格视图)的使用前台绑定
查看>>
图像加载
查看>>
关于zxing生成二维码,在微信长按识别不了问题
查看>>
Haskell学习-高阶函数
查看>>
手动通知扫描SD卡主动生成缩略图
查看>>