过滤器和监听器
Web三大组件:
-
Servlet:表现层-控制器
Servlet是一个运行在服务器端的小程序。能够接收客户端的请求并做出相应的响应。
-
过滤器
过滤,筛选。
-
监听器
监听web相关组件的生命周期和相关活动的。
1. 理解过滤器的特点和工作原理
可以实现 Web 应用程序中的预处理和后期处理逻辑:日志记录、改善性能、安全与会话管理、敏感字过滤,或者自动登录…
今天的应用:解决请求和响应的字符编码问题。
你可以做的:你可以处理下新闻管理系统的管理员页面访问。
过滤器的生命周期:
当服务器启动的时候,过滤器会进行实例化并且进行初始化(init()),当每次请求过来的时候,都会执行对应的doFilter方法进行过滤,当服务器被正常关闭或者项目被正常移除的时候,过滤器会进行销毁(destroy())。
2. 掌握过滤器的定义和配置
3. 理解过滤器链
如果有多个过滤器(必须是保证请求都会被过滤),那么对于该请求会组合成过滤器链。
过滤器链里过滤器的执行顺序是由<filter-mapping>的位置决定的。
4. 理解监听器(Listener)的作用
主要监听的就是:request(HttpServletRequest),session(HttpSession),application(ServletContext)
监听器的分类:
-
监听域对象的创建和销毁
ServletContextListener
HttpSessionListener
ServletRequestListener
-
监听域对象中属性的增删改
ServletContextAttributeListener
HttpSessionAttributeListener
ServletRequestAttributeListener
-
监听session在对某个对象操作时的情况(感知型监听器)
HttpSessionBindingListener
5. 掌握监听器的使用方法
需求:要求统计在线人数!
分析:
在线人数存储在application中。
某用户上线 -> 在线人数+1
当用户登录成功 ->
session.setAttribute(用户); ->
application.setAttribute(application.getAttribute(在线人数)+1);
某用户下线 -> 在线人数-1
感知型监听器:可以限定只在指定对象(例如:user)存储到session中时 进行触发!