- 过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器
对请求进行修改、判断等,把不符合规则的请求在中途拦截或修改。也可以对响应进行过滤,拦截或修改响应。 - S2阶段使用过滤器主要进行页面编码设置和登录状态验证
1.创建过滤器包filter,创建普通java类并实现Filter接口;
2.重写destroy(销毁)、doFilter(执行/处理)、init(初始化)
init方法,初始化Filter,Filter在服务器启动阶段被实例化,并且调用init方法,init方法只执行一次,因为Filter只被实例化一次
destory方法,销毁Filter,释放内存,在web服务正常停止时调用此方法。或者项目重新部署,或者服务器重新启动的时候,会销毁所
有的Filter对象,销毁之前会先调用Filter对象的destroy方法,完成销毁前的准备工作,也是只执行一次doFilter方法里面编写过滤器要执行的逻辑代码(重点)
监听器介绍.
一个实现特定接口的普通java程序,而这个java程序专门用于监听另一个java对象的方法调用或属性的改变,当被监听对象发生上述事件
后,监听的某个方法将立即被执行。
监听器分类:按照监听的对象不同可分为HttpReauest域,HttpSession域和ServletContext域
ServletContextListener监听器,此监听器主要用来监听ServletContextListener的创建与销毁即服务器的创建与销毁
HttpSessioinListener监听器,此监听器用来监听Session的创建与销毁;
ServletRequestListener监听器,此监听器用来监听每一次请求调用请求创建时的方法,当请求结束时,调用销毁的方法
// 1.获取application作用域(统计在线人数的值保存在该作用域里面)
ServletContext application;
// 2.从 application作用域里面获取在线人数
Integer sessionCount;
@Override
public void sessionCreated(HttpSessionEvent arg0) {
application = arg0.getSession().getServletContext();
sessionCount = (Integer)application.getAttribute("sessionCount");
// 3.对 sessionCount进行非空判断,如果为空,表示当前的用户是第一个用户,则赋值1
if(null == sessionCount) {
sessionCount = 1;
}else {
sessionCount++;//否则就在原先人数基础上加1
}
// 4.把改变过后sessionCount保存到 application作用域里面
application.setAttribute("sessionCount", sessionCount);
}
@Override
public void sessionDestroyed(HttpSessionEvent arg0) {
application = arg0.getSession().getServletContext();
sessionCount = (Integer)application.getAttribute("sessionCount");
// 1.减少1人
sessionCount-=2;
// 2.把改变过后sessionCount保存到 application作用域里面
application.setAttribute("sessionCount", sessionCount);
}



