Filter
                Filter也称之为过滤器,Filter是Servlet技术中最激动人心的技术,
                Filter可以管理WEB服务器中所有的WEB资源,
                Filter可以对JSP,Servlet,HTML,以及图片文件等进行拦截和过滤,
                Filter常用于实现一些特殊的功能,比如访问权限的控制,敏感词汇的过滤,乱码的处理等等,
                Filter其实就是一个特殊的Servlet,
                Servlet API提供了Filter接口,在WEB项目中,一个Java类实现了Filter接口,那这个Java类他就是Filter过滤器,
                Filter其实就是在用户访问目标资源之前,对请求和响应进行拦截过滤和处理。

Filter开发步骤
                在WEB项目中创建一个Java类,
                让该类实现javax.servlet.Filter接口,
                在该类中实现Filter接口的所有方法,
                在web.xml文件中进行相关的配置。

Filter的生命周期
                创建
                                Filter对象在WEB服务器启动的时候,由WEB服务器帮我们创建
                                init()
                销毁
                                Filter对象在WEB服务器关闭的时候会被销毁
                                destory()

Filter的细节
                Filter链
                        在同一个WEB应用中,可以开发编写多个Filter,那这多个Filter组成了一个链子,这个链子我们就称之为Filter链,
                        WEB服务器在执行Filter链的时候,会根据Filter在web.xml文件中的配置顺序来执行。
                Filter的初始化参数
                        在web.xml文件中,可以通过标签来为Filter配置初始化参数,
                        WEB服务器在创建Filter对象的时候,会调用Filter对象的init方法,并且将封装了Filter初始化参数的FilterConfig对象传递进去,
                        在Filter的init方法中,就可以通过FilterConfig对象来获取Filter的初始化参数。

Filter常见应用
                统一全站字符编码
                        服务器端响应数据的乱码
                        客户端请求数据的乱码
                校验用户是否登录
                         
                
监听器
                是一个实现了特定接口的普通Java类,用于监听其他对象的创建和销毁,监听其他对象的方法执行和属性改变,
                被监听的对象如果发生了上述的事件,监听器的某个方法就会立刻的执行。
作用
                监听(监视,观察)其他对象所发生的变化,主要用于图形化界面的程序员,比如Java的GUI,Android,IOS。
组成的元素
                事件源
                监听器
                监听器绑定事件源
                事件发生
                事件处理

入门案例
                Frame

自定义监听器
                Student                                事件源
                        eat();
                        sleep();
                        addStudentListener(StudentListener listener);
                StudentListener                监听器
                        preEat();
                        preSleep();
                        
Servlet中的监听器
                Servlet规范为我们提供了8个监听器。
                
                监听域对象的创建和销毁
                        ServletContextListener
                        HttpSessionListener
                        ServletRequestListener
                监听域对象中属性的变化
                        ServletContextAttributeListener
                        HttpSessionAttributeListener
                        ServletRequestAttributeListener
                编写步骤
                        创建一个普通的Java类
                        让该类实现监听器的接口
                        在该类中实现监听器接口的所有方法
                        在web.xml文件中通过标签来配置(注册)监听器
                帮助JavaBean对象感知自己在session域对象中的状态
                        HttpSessionBindingListener
                        HttpSessionActivationListener
                        这两个特殊的监听器不需要在web.xml文件中配置,让JavaBean实现这两个接口就可以了

Listener常见应用
                统计在线用户数
                                计数器
                                        可以把计数器保存在ServletContext域对象当中
                                        计数器的默认值是0
                                        如果session域对象创建了,那我们认为用户在线了,计数器就需要+1
                                        如果session域对象销毁了,那我们认为用户离线了,计数器就需要-1
                                        
                                在线
                                        一个用户有了自己的session对象,我们就认为这个用户在线了
                                离线
                                        一个用户手动销毁自己的session对象,获取超时了,那我们就认为这个用户离线了
                
                统计在线登陆用户数