监听器(listener)
-
监听器简介 :
- 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。
- 主要是用来监听特定对象的创建或销毁、属性的变化的!是一个实现特定接口的普通java类!
- 对象:自己创建自己用 (不用监听), 别人创建自己用 (需要监听)
-
监听器的监听对象
- 在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为
ServletContext
,HttpSession
和ServletRequest
这三个域对象 - Servlet规范针对这三个对象上的操作,又把这多种类型的监听器划分为三种类型
- 监听三个域对象创建和销毁的事件监听器
- 监听域对象中属性的增加和删除的事件监听器
- 监听绑定到 HttpSession 域中的某个对象的状态的事件监听器 (查看API文档)
- 在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为
过滤器
-
过滤器简介 :
-
Filter也称为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
-
Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截
-
Filter是如何实现拦截的?
- Filter接口中有一个doFilter方法,当开发人员编写好Filter,并配置对哪个web资源进行拦截后,WEB服务器每次在调用web资源的service方法之前,都会先调用一下filter的doFilter方法,因此,在该方法内编写代码可达到如下目的:
- 调用目标资源前,让一段代码先执行
- 是否调用目标资源(即是否让用户访问web资源)
- web服务器在调用doFilter方法时,会传递一个filterChain对象进来,filterChain对象是filter接口中最重要的一个对象,它也提供了一个doFilter方法,开发人员可以根据需求决定是否调用此方法,调用该方法,则web服务器就会调用web资源的service方法,即web资源就会被访问,否则web资源不会被访问。
- 调用目标资源之后,让一段代码执行
- Filter接口中有一个doFilter方法,当开发人员编写好Filter,并配置对哪个web资源进行拦截后,WEB服务器每次在调用web资源的service方法之前,都会先调用一下filter的doFilter方法,因此,在该方法内编写代码可达到如下目的:
-
为什么需用到过滤器 : 项目开发中,经常会涉及到重复代码的实现!
-
过滤器,设计执行流程:(OOAD : 面向对象的分析与设计 - 时序图)
- 用户访问服务器
- 过滤器: 对Servlet请求进行拦截
- 先进入过滤器, 过滤器处理
- 过滤器处理完后, 在放行, 此时,请求到达Servlet/JSP
- Servlet处理
- Servlet处理完后,再回到过滤器, 最后在由tomcat服务器相应用户;
-
开发步骤 :
- 写一个普通java类,实现Filter接口
- 配置过滤器
-
-
过滤器相关Api