filter 和 struts 拦截器的区别

观点1:

比较一,filter基于回调函数,我们需要实现的filter接口中doFilter方法就是回调函数,而interceptor则基于java本身的反射机制,这是两者最本质的区别。

比较二,filter是依赖于servlet容器的,即只能在servlet容器中执行,很显然没有servlet容器就无法来回调doFilter方法。而interceptor与servlet容器无关。

比较三,Filter的过滤范围比Interceptor大,Filter除了过滤请求外通过通配符可以保护页面,图片,文件等等,而Interceptor只能过滤请求。

比较四,Filter的过滤例外一般是在加载的时候在init方法声明,而Interceptor可以通过在xml声明是guest请求还是user请求来辨别是否过滤

观点2:

拦截器由spring管理,只对
action起作用,不能拦截jsp页面、图片等其他资源。拦截器截获用户对action的访问,如需要跳转,只需如action一样返回一个
result,spring根据result的配置执行跳转。如无需跳转,可调用invocation.invoke();方法来执行用户请求的
action。拦截器在action之前开始,在action完成后结束(如被拦截,action根本不执行)

如不进行处理,过滤器和拦截器都会将正常的登录操作屏蔽,因此过滤器中需要判断用户访问的url是否为登录操作或登录页面,拦截器中需要判断用户访问的action是否登录action。

观点3:

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

2、过滤器依赖与servlet容器,而拦截器不依赖与servlet容器

3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用

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

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

时间: 2024-10-16 16:28:57

filter 和 struts 拦截器的区别的相关文章

过滤器(Filter)与拦截器(Interceptor )区别

目录 过滤器(Filter) 拦截器(Interceptor) 拦截器(Interceptor)和过滤器(Filter)的区别 拦截器(Interceptor)和过滤器(Filter)的执行顺序 拦截器(Interceptor)使用 过滤器(Filter)使用 拦截器(Interceptor)和过滤器(Filter)的一些用途 demo 总结 参考资料 正文 回到顶部 过滤器(Filter) Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,

(转)过滤器和拦截器的区别

1.拦截器是基于java的反射机制的,而过滤器是基于函数回调 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 3.拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用 4.拦截器可以访问action上下文.值栈里的对象,而过滤器不能 5.在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次 拦截器 :是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的

Servlet,过滤器,监听器,拦截器的区别

<因时间仓促,引用别人的博文> 想起struts2和struts1的区别的时 候,发现为什么struts1要用servlet,而struts2要用filter呢?一时又发现,servlet和filter有什么区别呢?于是看 了看web.xml,一时又发现,咦,servlet.filter.listener?还有个interceptor? 慢慢来吧,需要补课的地方还有很多很多呀.初学的时候都不知道他们存在呢.呵呵. 下面从几个方面阐述一下题目中四个概念的区别与联系: 1.概念 2.生命周期 3.

Struts2中过滤器和拦截器的区别

拦截器和过滤器的区别: 1.拦截器是基于java的反射机制的,而过滤器是基于函数回调 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 3.拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用 4.拦截器可以访问action上下文.值栈里的对象,而过滤器不能 5.在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次 拦截器 :是在面向切面编程的就是在你的service或者一个方法前调用一个方法,或者在方法后调用一个方法比

struts拦截器的详解

1.拦截器:Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现. WebWork中文文档解释:拦截器是动态拦截Action调用的对象.它提供了一种机制可以使开发者可以定义在一个Action执行的前后执行的代码,也可以在一个action执行前阻止其执行.同时也提供了一种可以提取Action中可重用的代码的方式. 拦截器栈(Interceptor Stack):Struts2拦截器栈就是将拦截器按

Java 过滤器、监听器、拦截器的区别

原文:http://www.360doc.com/content/10/0601/09/495229_30616324.shtml 1.过滤器 Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码.做一些业务逻辑判断等.其工作原理是,只要你在web.xml文件配置好要拦截的客户端请求,它都会帮你拦截到请求,此时你就可以对请求或响应(Request.Response)统一设置编码,简化操作:同时还可进行逻辑判断,如用户是否

160831、过滤器和拦截器的区别

过滤器:是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符 拦截器:是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现

Struts拦截器

Struts拦截器和过滤器的区别: 过滤器:对所有的东西都过滤.包括css,.js,.jpg等. 拦截器:只对action拦截.是struts工具. 一.拦截器配置. 1.创建一个类,让其继承自AbstractInterceptor 2.配置struts.xml 1)添加<interceptors>配置节,添加拦截器配置. 2)在action中引用,<interceptors>中的配置. 注意:1.在action中需要添加defaultStack引用 2.在建<interce

Java 过滤器和拦截器的区别

昨天晚上做梦,梦见面试官问我过滤器和拦截器的区别... 过滤器和拦截器的区别:1.过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的. 请求结束返回也是,是在servlet处理完后,返回给前端之前.2.拦截器可以获取IOC容器中的各个bean,而过滤器就不行,因为拦截器是spring提供并管理的, spring的功能可以被拦截器使用,在拦截器里注入一个service,可以调用业务逻辑. 而过滤器是JavaEE标准,只需依赖servlet api ,不