JavaWeb监听器

三大组件:

  • Servlet
  • Listener
  • Filter
  1. 都需要在web.xml中进行配置
  • Servlet
  • Listener(两个感知监听器不需要配置)
  • Filter

Listener监听器

  1. 初次相见:AWT
  2. 二次相见:SAX
  3. JavaWeb

监听器:

  • 它是一个接口,内容由我们来实现;
  • 它需要注册,例如注册在按钮上
  • 监听器中的方法,会在特殊事件发生时被调用!

观察者:

  • 事件源
  • 事件
  • 监听器

JavaWeb中的监听器

  • 事件源:三大域!
    • ServletContext:
      • 生命周期监听:ServletContextListener,它有两个方法,一个在出生时调用,一个在死亡时调用;
      • 属性监听:ServletContextAttributeListener ,它有三个方法,一个在添加属性时调用,一个在替换属性时调用,最后一个在移除属性时调用。
    • HttpSession:
      • 生命周期监听:HttpSessionListener,它有两个方法,一个在出生时调用,一个在死亡时调用;
      • 属性监听:HttpSessionAttributeListener ,它有三个方法,一个在添加属性时调用,一个在替换属性时调用,最后一个在移除属性时调用。
    • ServletRequest:
      • 生命周期监听:ServletRequestListener,它有两个方法,一个在出生时调用,一个在死亡时调用;
      • 属性监听:ServletRequestAttributeListener ,它有三个方法,一个在添加属性时调用,一个在替换属性时调用,最后一个在移除属性时调用。

JavaWeb中完成编写监听器

  • 写一个监听器类:要求必须实现某个监听器接口;
  • 注册:是在web.xml中配置完成注册!

事件对象

  • ServletRequestEvet
    • ServletContex getServletContext()
    • ServletRequest getServletContext()

感知监听

  • 它用来添加到javaBean上,而不是添加到三大域上!
  • 这两个监听器都不需要在web.xml中注册!

过滤器:

它会在一组资源(jsp、Servlet、.css、.html等等)的前面执行!

它可以让请求得到目标资源,也可以不让请求达到!

过滤器有拦截请求的能力!

登录:

允许它访问AServlet、BServlet、CServlet


过滤器如何编写

  1. 写一个类实现Filter接口
  2. 在web.xml中进行配置

Filter接口

void init(FilterConfig)

  • 创建之后,马上执行;Filter会在服务器启动时就创建!

void destroy()

  • 销毁之前执行;在服务器关闭时销

void doFilter(FilterRequest, FilterResponse, FilterChain)

  • 每次过滤时都会执行

Filter是单例的!

web.xml

<filter>

  <filter-name>xxx</ filter-name>

  <filter-class>cn.itcast.web.filter.AFilter</ filter-class>

</filter>

<filter-mapping>

  <filter-name>xxx</filter-name>

  <url-pattern>/*</url-pattern>

<filter-mapping>


FilterChain

  • doFilter(ServletRequest, ServletResponse):放行
  • 放行:就相当于调用了目标Servlet的service()方法;

多过滤器

FilterChain#doFilter()方法:

  • 执行目标资源,或是执行下一个过滤器!如果没有下一个过滤器,那么执行的是目标资源,如果有,那么就执行下一个过滤器!

过滤器的四种拦截方法

  • 请求:<dispatcher>DISPATCHER</dispatcher>
  • 转发:FORWARD
  • 包含:INCLUDE
  • 错误:ERROR

在Filter-mapping中进行配置

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值