zoukankan      html  css  js  c++  java
  • 天网恢恢Filter 窃听风云Listener

    天网恢恢(Filter过滤器):

    可认为是Servlet的加强版本,主要对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是一个典型的处理链。

    Filter的几个用处:
    1、在HttpServletRequest到达Servlet之前,拦截客户的HttpServletRequest

    2、根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据

    3、在HttpServletResponse到达Servlet之前,拦截客户的HttpServletResponse

    4、根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据

    Filter的种类:
    1、用户授权的Filter:负责检查用户请求,根据请求过滤用户非法请求。

    2、日志Filter:详细记录某些特殊的用户请求

    3、负责解码Filter:对非标准编码的请求编码

    4、能改变XML内容的XSLT Filter等

    5、Filter可负责拦截多个请求或响应,一个请求和响应也可以被多个Filter拦截

    创建Filter的步骤:
    1、创建Filter处理类
    2、web.xml文件中配置Filter(也可以使用注解@WebFilter)

    Filter必须实现javax.servlet.Filter接口(三个方法):
    1、void init(FilterConfig config) 负责Filter的初始化
    2、void destory() 用于Filter销毁之前,完成某些资源的回收
    3、void DoFilter(ServletRequest request,ServletResponse response,FilterChain chain) 实现过滤功能
    对每个请求及响应增加的额外处理


    配置Filter:
    Servlet统称只要配置一个URL,Filter可以同时拦截多个请求的URL,所以要用到模式字符串

    配置部分:
    配置Filter名
    配置Filter拦截URL模式

    配置方式:
    在Filter通过注解进行配置
    在Web.xml文件中通过配置文件进行配置(和Servlet类似)

    注解@WebFilter:
    常用属性:
    asyncSupported : 是否支持异步操作模式
    dispatcherTypes: 指定哪种dispather模式的请求来进行过滤
    displayName: 指定Filter的显示名
    initParams: 配置Filter初始化参数
    servletNames: 注定多个Servlet名称,该Filter只对这几个Servlet执行过滤
    urlPatterns/value:这两个属性完全相同,都指定Filter拦截的URL


    窃听风云(Listener监听器):
    web应用在容器内运行会发生不断的变化,什么启动停止,session开始结束,请求到达等等。

    两个步骤:
    定义Listener实现类
    通过注解或在web.xml文件中配置Listener

    配置Listener的两种方式:
    使用@WebListener注解修饰Listener实现类即可
    在web.xml中使用<listener.../>元素进行配置
    只要在web.xml中用listener-class指定Listener实现类即可

    使用ServletContextAttributeListener:
    用于监听ServletContext(application)范围内的属性的变化,一般有三个方法:
    attributeAdded(ServletContextAttributeEvent event):当程序把一个属性存入application范围内时触发
    attributeRemoved(ServletContextAttributeEvent event):当程序把一个属性从application范围内移除时触发
    attributeReplaced(ServletContextAttributeEvent event):当程序替换一个属性从application范围内时触发

    使用ServletRequestListener和ServletRequestAttributeListener:
    用于监听用户的请求到达,实现方法如下:
    requestInitalized(ServletRequestEvent sre):用户到达请求,被初始化时触发该方法
    requestDestoryed(ServletRequestEvent sre):用户请求结束,被销毁时触发该方法

    使用HttpSessionListener和HttpSessionAttributeListener:
    监听session的创建和销毁,也有两个方法:
    sessionCreated(HttpSessionEvent se):用户和服务器的会话开始,创建触发该方法
    sessionSestory(HttpSessionEvent se):用户和服务器的会话断开,销毁触发该方法

     

  • 相关阅读:
    springmvc常用注解之@Controller和@RequestMapping
    解决nginx负载均衡的session共享问题
    iOS顶部滑动菜单:FDSlideBar 与NinaPagerView
    C#中使用WeiFenLuo.WinFormsUI.Docking.dll实现窗口停靠效果
    [转]C#使用Log4Net记录日志
    ICSharpCode.SharpZipLib 开源压缩库使用示例
    WorldWind源码剖析系列:日志类Log
    [转]反射基础
    WorldWind源码剖析系列:星球球体的加载与渲染
    Vue 前端路由 vue-router
  • 原文地址:https://www.cnblogs.com/zpoor/p/7812024.html
Copyright © 2011-2022 走看看