zoukankan      html  css  js  c++  java
  • 过滤器和监听器

    过滤器(Filter(接口)):过滤器就是servlet的一个特例
    什么是过滤器:是servlet2.3规范中定义的一种小型的,可插入的
    web组件,用来拦截servlet容器的请求和响应过程
    以便查看,提取或以某种方式操作正在客户端和服务器
    之间交换的数据,
    过滤器通常是封装了一些web功能的组件,这些功能很重要
    但对于处理客户端后发送响应来说不是决定性的
    实现过滤器的步骤:
    1.创建一个java类,实现javax.servlet.Filter;接口
    2.在实现类中doFilter方法添加过滤或拦截的算法
    3.在web.xml中添加<filter></filter><filter-mapping></filter-mapping>

    过滤器初始化参数:
    容器启动之后,会创建过滤器对象,然后会调用init方法,在init方法中
    读取web.xml中的初始化参数(包括局部和全局),在执行doFilter方法前
    做数据初始化工作。

    过滤器的优点:
    实现代码的“可插拔性”,即增加或减少某个功能模块,不会影响程序的
    正常运行,可以将多个相同处理逻辑的模块集中写在过滤器里,方便维护

    只要:在需求说明中有这样的词语,“过滤”,“拦截”,“代理”,
    “在原有功能基础上添加新功能”,“在主业务之前,之后添加功能”
    那么,第一反应用代理模式实现,或(servlet filter)


    过滤器的生命周期:当服务启动时,会加载web.xml中的内容
    如果文件中有<filter>项,那么读取<filter-class>节点
    中的内容,然后反射实例化对象,过滤器的的声明周期开始
    如果过滤器类不存在就无法反射,那么就在服务器启动时报异常
    生命周期开始后会自动调用init方法(只调用一次)
    如果<url-patten>节点中放置的是/*,代表所有请求都要被此
    过滤器拦截,只要请求任何资源都会进入此过滤器的doFilter
    这个方法,在此方法中做相关检测工作,如果检测成功了,就
    可以通过filterChain.doFilter(servletRequest,servletResponse);
    去寻找下一个过滤器,如果下一个过滤器不存在就直接访问对应的资源
    如果存在,就进入下一个过滤器的doFilter方法,执行完后,依次退回

    当服务器正常停止的时候,会调用destroy方法,过滤器声明周期结束

    如果有多个过滤器就是过滤器链,执行顺序跟web.xml的加载(生命周期)顺序一样

    监听器:servlet规范中定义的一种特殊的组件,用来监听servlet容器产生
    的事件,并做响应的处理
    容器产生的事件有两大类:
    生命周期相关的事件
    ServletRequestListener request对象的监听器
    HttpSessionListener session对象的监听器
    sessionCreate方法, 当服务器创建session对象时就调用此方法
    sessionDestroyed方法,当session对象销毁时调用此方法
    ServletContextListener application对象的监听器
    绑定数据相关的事件
    当调用了request对象,session对象,
    servletContext(application)对象的setAttribute方法
    和removeAttribute方法时产生的事件
    ServletRequestAttributeListener
    attributeAdded方法,当给调用request.setAttribute()方法时触发此方法
    attributeRemoved方法,当requset中的对象被移除的时候调用此方法
    attributeReplaced方法,当request中的对象被替换的时候调用此方法
    HttpSessionAttributeListener
    attributeAdded方法
    attributeRemoved方法
    attributeReplaced方法
    ServletContextAttributeListener
    attributeAdded方法
    attributeRemoved方法
    attributeReplaced方法

    实现监听器的步骤:
    1.新建一个java类要实现上面对应监听器接口
    2.编写对应方法的监听逻辑
    3.在web.xml中,注册监听器<listener></listener>

  • 相关阅读:
    点击cell后 cell的背景不变,cell上的字体颜色发生改变的功能实现
    各种属性设置
    多列表 ,菜单
    正则表达式
    多个storyboard之间的跳转问题
    关于uicollectionview的个人学习
    uiscrollview的自动布局
    手动自动布局
    关于简单的跳转问题
    深入理解@class和#import的区别
  • 原文地址:https://www.cnblogs.com/songyao2018/p/8804856.html
Copyright © 2011-2022 走看看