web.xml里面可以配置Filter和Listener,他们有什么区别,有什么共同点吗?应该在什么情况下使用他们?

解决方案 »

  1.   

    Filter是过滤器,过滤一些不友好或是你不想要的东东,Listener是Servlet的监听器,可以监听客户端的请求、服务端的操作等。
    通过监听器,可以自动激发一些操作。
      

  2.   

    Filter可以实现对请求的过滤和重定向等,也就是说可以操作request和response,session等对象,listner只能监听到以上对象的属性的修改。
      

  3.   

    Filter 是struts的核心控制器,负责拦截所有用户请求。
    listener是监听器,通常都是监听并加载一些插件用的,比如spring。log4j等
      

  4.   

    Filter(过滤器):你可以写个类实现Filter接口,然后配置到web.xml中,那么Tomcat在接受到Http请求后首先会调用FilterChain中的第一个过滤器,为了能调用下个过滤器或真正的请求(servlet or jsp),所以你的实现类所实现的方法中必须要调用chain.doFilter(request,response),不然会得到空白页面!过滤器通常用做处理乱码,权限控制,也可以管理Hibernate中的session!
    Listener(监听器):利用观察者模式实现,在Tomcat中,如果要对application,session,request,response等对象监听,要实现类似****Listener接口,再配置到web.xml中,那么Tomcat在启动的时候就会把你写的这些监听类实例化成对象加入到一个集合中,此后对你要监听的对象操作时,都将会调用listener中的方法,比如HttpSessionListener 可以用来监听当前在线的所有用户!
      

  5.   

    Filter和servlet基本类似  可以用做servlet来用(struts2.0就是这么干的) 有reqeust请求才能运行listener是监听器 是系统启动就运行 一般监听都是用来事先加载系统文件的
      

  6.   

    本身从字面上都比较好理解区分的
    Filter 过滤器,Listener  监听器