Day32 JavaWeb知识 (9)_Listener&Filter

(一)Listener

一.概述

  1. 监听器
  2. 监听器的内部机制 : 其实就是接口回调

二.接口回调

  1. 事先先将一个对象传递给A,当A执行到符合某个条件时,通过这个对象,来调用B中的方法,
    但是要主义的是,不是直接传递B的实例,而是传递一个接口的实例过去

三.Web监听器

总共8个,分为三种类型
-1- 定义一个类,实现接口
-2- 注册 || 配置监听器     //在web.xml中<listenner>  <listenner-class> 定义类的路径 </listenner-class>   </listenner>

  1. - - 监听三个作用域创捷和销毁
    三个作用域
              request   ---httpServletRequest
              session   ---httpSession
              application ---ServletContext

           监听器
              1.  ServletRequestListener
              2.  HttpSessionListener
              3.  ServletContextListener
    作用:
           ServletContextListener : 可以利用它在servletContext创建的时候,完成初始化工作,执行自定义任务调度:Timer
           HttpSessionListener    :统计在线人数
  2. - - 监听三个作用域属性状态变更
    request   ---ServletRequestAttributeListener
    session   ---HttpSessionAttributeListener
    application ---ServletContextAttributeListener
           可以监听在作用域中值 添加 | 替换 | 移除的动作
  3. - - 监听httpSession里面存值的状态变更
    这一类监听器不用注册
    HttpSessionBindingListener : 用于监听绑定和解除绑定

    HttpSessionActivationListener : 用于监听现在session的值 是 钝化(序列化)还是活化(反序列化)的动作
    钝化(序列化) : 把内存中的数据  存储到硬盘上
    活化(反序列化) : 把硬盘中的数据读取到内存中
    session的钝化活化目的:
            session中的值可能会很多,并且长时间不使用这个内存中的值,可以将session的值存在硬盘上[钝化],
            等下次使用的时候,在从硬盘上提取出来 [活化]

四.优化session(配置钝化活化)

三种配置方式

  1. 在tomcat里面 conf/context.xml 里面配置
                作用范围: 对所有的运行在这个服务器的项目生效
  2. 在 conf/catalina/locahost/context.xml 配置
                作用范围: 对localhost生效   locahost:8080
  3. 在web工程项目中的  META-INF/context.xml
                作用范围: 只对当前的工程生效

    maxIdleSwap : 1  代表1分钟不用就钝化
    directory :  钝化后的那个文件存放的目录位置
    <Context>
        <Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
    	<Store className="org.apache.catalina.session.FileStore" directory="mine"/>
        </Manager>
    </Context>
    

     

(二)Filter

一.概述

  1. Filter:   过滤器, 其实就是对客户端发出来的请求进行过滤, 浏览器发出,然后服务器派servlet处理,
         在中间就可以过滤, 其实过滤器起到的是拦截的作用.

二.使用

  1. 定义一个类, 实现Filter接口    implements Filter
  2. 注册过滤器         //在web.xml里面

三.生命周期

  1. 创建
    服务器启动的时候就创建
  2. 销毁
    服务器停止的时候

四.Filter执行顺序

  1. 客户端发出请求,先经过过滤器,放行然后到Servlet
  2. 如果有多个过滤器,那么会按照注册的映射顺序来排队,有一个不放行,那么后边的过滤器与Servlet都收不到请求

五.细节

  1. init方法的参数FilterConfig,可以用于获取filter在注册的名字,以及初始化参数
  2. 如果想放行,那么在doFilter方法里边操作,使用参数chain
       chain.doFilter(request , response);  放行 ,让请求到达下一个目标
  3. <url-pattern>/*</url-pattern>  写法格式与servlet一样
  4. 针对 dispatcher设置
    REQUEST : 只要是请求过来,就都拦截 ,默认是REQUEST
    FORWARD : 只要是转发都拦截
    ERROR : 页面出错发生跳转
    INCLUDE : 包含页面的时候就拦截

六.BeanUtils的使用

  1. 注册自己的日期转换器
    ConvertUtils.register(new MyDateConverter() , Date.class );
    //转化数据
    Map map = request.getParameterMap();
    UserBean bean = new UserBean();
    //转化map中的数据,放置到bean中
    BeanUtils.populate( bean , map);

七.自动登陆中过滤器的思路

  1. 先判断session是否有效,如果有效,就不用取cookie了,直接放行 chain.doFilter(request , response);
  2. 如果session失效了,那么就取cookie
     - - 没有cookie放行
     - - 有cookie
                 1.取出来cookie的值,然后完成登录
                 2.把这个用户的值存储到session中
                 3.放行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值