RT
说的细点  最好说明什么时候用哪个  为什么不用另一个

解决方案 »

  1.   


    具体的东西我懂 但是你用过滤器去掌握方向也可以我是问具体差距在哪 可以从性能上说  我发布一下本质区别1、拦截器是基于java反射机制的,而过滤器是基于函数回调的。 
    2、过滤器依赖与servlet容器,而拦截器不依赖与servlet容器。 
    3、拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。 
    4、拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。 
    5、在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。
    这是本质区别我问的问题是 什么时候用哪个 为什么不用另一个 有什么好处
      

  2.   

    过滤器是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,
    比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),
    或者在传入servlet或者 struts的action前统一设置字符集,
    或者去除掉一些非法字符(聊天室经常用到的,一些骂人的话)拦截器 可通过的是符合条件的action。 拦截器本身是一个普通的Java对象,它能动态拦截Action调用,
    Action执行前后执行拦截器本身提供的各种个样的Web项目需求。也可以阻止Action的执行,同时也可以提取
    Action中可以复用的部分。
      

  3.   


    我觉得 不要用拦截器  因为一旦用了拦截器 你的代码就会依赖于拦截器或者是struts2这个框架,如果有大的改动不好处理但是我对 过滤器也不是很了解 所以用不用 LZ自己考虑吧
    另外 可以自己写个方法 或者前端 直接控制
      

  4.   

    这个问题很悲剧啊 感觉没有什么非常大的区别 都是做拦截处理 搞不懂为什么struts2要加入拦截器
      

  5.   

    据我的理解,拦截器比过滤器更好管理,拦截器可以定义一个stack
    而过滤器,通常来讲是适用于所有访问的(包括servlet,或者是struts2的action),如果把过滤器配置在struts2的过滤器之前,你可以做到一些比如urlrewrite之类的功能。
      

  6.   

    用拦截器比较合理拦截器才是struts2的核心
    过滤器到处都有
      

  7.   

    使用struts2的拦截器必须有一个前提,就是必须经过action,如果你直接访问页面的话,拦截器就不会起作用了
      

  8.   

    实现原理不一样
    filter 责任链,无非就是方法调用
    interceptor 动态代理,反射,动态编译...
      

  9.   

    我问的问题是 什么时候用哪个 为什么不用另一个 有什么好处interceptor只拦截action请求
    filter过滤请求几乎不限制,包括js,jsp,css,图片之类的
    当过滤器和拦截器同时存在的时候就分工拦截了,interceptor拦截action请求,其他的归filter过滤
    所以当用到struts2框架要过滤url的时候两个就都要用了,汗
    刚试验了一下,目前原因不明