zoukankan      html  css  js  c++  java
  • Listener与Filter

    一、监听器Listener

    javaEE的13们规范中 包括servlet技术和jsp技术

    servlet规范中包括三门技术:(servlet的三大组件)

    servelt技术  Listener技术  Filter技术

    1.什么是监听器

    javaEE中的监听器 监听某些对象的状态变化的

    事件源:被监听的对象,三个域对象(request域 session域 servletContext域)

    监听器:监听三个域对象的状态变化的接口

    响应行为:当监听器被触发后,需要执行的代码

    监听器的绑定:动作 将监听器注册到事件源身上

    2.监听器的种类(6+2)

    监听器分为两种:

    第一种:监听三个域对象的6个

    第二种:监听要被放置到session域中的对象的状态的(感知监听器)

    3.监听三个域对象的监听器 6个

    第一维度:根据域对象不同分为三种

    第二维度:根据监听域对象的不同状态分为两种

     

    ServletContext域

    HttpSession域

    ServletRequest域

    监听域对象的创建与销毁

    ServletContextListeer

    HttpSessionListener

    ServletRequestListener

    监听域对象中的属性变化的

    ServletContextAttributeListeer

    HttpSessionAttributeListener

    ServletRequestAttributeListener

    4.怎样编写一个监听器

    1)创建一个监听器类去实现监听器接口

    2)覆盖接口中的尚未实现的监听方法

    3)需要在web.xml中配置监听器

    5.ServletContextListener

    监听ServletContext对象的创建与销毁的

    ServletContext对象何时创建于销毁?

    创建:服务器启动就要创建该对象

    销毁:服务器关闭销毁

    ServletContontextListenter的作用?

    1)进行一些初始化的操作,加载初始化文件,创建初始化的数据

    2)加载一些框架配置文件---使框架介入到web中

    3)执行任务调度----定时器

    6.HttpSessionListener

    监听HttpSession对象的创建与销毁的

    HttpSession域的创建于销毁

    创建:第一次指定request.getSession()

    销毁:服务器关闭、session超时、手动销毁

    HttpSession的作用?

    记录当前网站的在线的人数

    扫描session过期时间

    7.ServletRequestListener

    监听request对象创建与销毁的

    request对象何时创建与销毁?

    创建:每次访问service方法都会创建request

    销毁:请求响应后request对象销毁


    8.监听域对象中属性变化的三个监听器

    ServletContextAttributeListener

    HttpSessionAttributeListener

    ServletRequestAttributeListener

    域对象通用的方法:

    setAttribute:新增属性/修改属性

    getAttribute

    removeAttribute:移除属性

    9.感知监听器

    注意:将要被放置到session中的对象自己可以感知,监听器绑到被放到session域中的对象身上。

    注意:感知监听器不需要配置

    session中对象的状态:

    1)绑定状态  session.setAttribute(“user”,user);

    2)解绑状态  session.removeAttribute(user)

    3)钝化状态  将session中对象的持久化磁盘的过程

    4)活化状态  将磁盘上存储对象信息恢复到session中

    注意:钝化与活化的过程是web容器控制的

    问试题:当服务器中用户比较多时候,怎样去优化?

    其中一方面的回答:从session过多的角度去回答

     

    绑定与解绑HttpSessionBindingLinstener

    钝化与活化HttpSessionActivationListener

     

    二、过滤器Filter

    1.filter的简介

    filter是对客户端访问资源的过滤,符合条件放行,不符合条件

    2.快速入门

    步骤:

    1)编写一个过滤器的类实现Filter接口

    2)实现接口中尚未实现的方法(着重实现doFilter方法)

    3)在web.xml中进行配置(主要是配置要对哪些资源进行过滤)

     

    3.Filter的API详解

    (1)filter生命周期及其与生命周期相关的方法

    Filter接口有三个方法,并且这个三个都是与Filter的生命相关的方法

    init(Filterconfig):代表filter对象初始化方法 filter对象创建时执行

    doFilter(ServletRequest,ServletResponse,FilterCha):代表filter执行过滤的核心方法,如果某资源在已经被配置到这个filter进行过滤的话,那么每次访问这个资源都会执行doFilter方法

    destory():代表是filter销毁方法 当filter对象销毁时执行该方法

    Filter对象的生命周期:

    Filter何时创建:服务器启动时就创建该filter对象

    Filter何时销毁:服务器关闭时filter销毁

    (2)Filter的API详解

    1)init(FilterConfig)

    其中参数config代表 该Filter对象的配置信息的对象,内部封装是该filter的配置信息。


     
     

    2)destory()方法

    filter对象销毁时执行

    3)doFilter方法

    doFilter(ServletRequest,ServletResponse,FilterChain)

    其中的参数:

    ServletRequest/ServletResponse:每次在执行doFilter方法时 web容器负责创建一个request和一个response对象作为doFilter的参数传递进来。该request个该response就是在访问目标资源的service方法时的request和response。

    FilterChain:过滤器链对象,该对象封装所有的filter的引用

     

    4.Filter的配置 


    url-pattern配置时

    1)完全匹配  /sertvle1

    2)目录匹配  /aaa/bbb/* ----最多的

    /user/*:访问前台的资源进入此过滤器

    /admin/*:访问后台的资源时执行此过滤器

    3)扩展名匹配  *.abc  *.jsp

    注意:url-pattern可以使用servlet-name替代,也可以混用

    dispatcher:访问的方式(了解)

    REQUEST:默认值,代表直接访问某个资源时执行filter

    FORWARD:转发时才执行filter

    INCLUDE: 包含资源时执行filter

    ERROR:发生错误时 进行跳转是执行filter

    总结Filter的作用:

    1)公共代码的提取

    2)可以对request和response中的方法进行增强(装饰者模式)

    3)进行权限控制

  • 相关阅读:
    GTK+ 3.6.2 发布,小的 bug 修复版本
    RunJS 新增 Echo Ajax 测试功能
    Mozilla 发布 Popcorn Maker,在线创作视频
    Sina微博OAuth2框架解密
    Mina状态机State Machine
    Mozilla 发布 Shumway —— 纯JS的SWF解析器
    Code Browser 4.5 发布,代码浏览器
    ROSA 2012 "Enterprise Linux Server" 发布
    ltrace 0.7.0 发布,程序调试工具
    Artifactory 2.6.5 发布,Maven 扩展工具
  • 原文地址:https://www.cnblogs.com/fengru/p/5531108.html
Copyright © 2011-2022 走看看