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

    过滤器: 定义在服务器端的一段程序, 可以截获客户端发来的请求, 并根据一定规则进行过滤和拦截

        过滤器的生命周期:
            服务器启动
                先通过web.xml加载过滤器进行实例化(这个过程是调用过滤器中init()方法, 同样也是只执行一次)
            客户端发送请求:
                执行过滤器中的doFilter()方法, 这个方法会执行N次, 每次有请求发送过来, 都会执行这个方法进行过滤
            销毁过程
                同servlet, 关闭或者停止服务器的时候会执行destory()方法

        过滤器链:
            不同的请求互不影响
            过滤器链主要是针对多个过滤器过滤同一个url请求
            过滤器的先后顺序是按照在web.xml的配置顺序来的
            运行顺序: 请求--->过滤器1过滤--->过滤器2过滤--->后台处理层--->过滤器2过滤--->过滤器1过滤--->客户端接收

        3.0新特性的过滤器:
            使用注解的方式:
                @WebFilter(filterName="", value={"",""}...等其他配置)



    监听器: 运行在服务器端的程序, 主要用于监听request, application, session这三个对象, 比如这三个对象的创建和销毁, 修改属性等一系列的操作
        监听器的配置
            创建类实现关于监听器的那些接口
            public class TestListener implements ...Listener... {
                ...实现其中的方法
            }

            web.xml中的配置
                <listener>
                    <listener-class>定义监听器的类的全路径名</listener-class>
                </listener>
            
            使用注解的方式:
                @WebListener写在类名的上面

        多个监听器的加载顺序
            按照web.xml的配置顺序来加载各个监听器
            如果在web.xml中配置有监听器, 过滤器, Servlet时, 他们的优先级分别为
                监听器 > 过滤器 > Servlet

        ServletContext对象的监听
            在web.xml中有这样一个标签:
                <context-param>
                    <param-name>初始化的参数名</param-name>
                    <param-value>初始化的参数值</param-value>
                </context-param>

                在监听器中可以使用参数对象来获取这个初始化参数
                String value = applicationEvent.getServletContext().getInitParameter("hanqi");
        HttpSession对象的监听
            session在一个用户第一次访问这个页面的时候被创建, session的实例可以创建多个, 有一个用户访问, 就会创建一个session
            用途: 统计在线人数, 网站的用户访问量

        HttpServletRequest对象的监听
            只要有请求发送过来, 就会执行监听器中的init()方法和destory()方法
            用途: 读取参数, 记录访问历史

        3.0版本之后的监听器只需要加上一个@WebListenner注解就可以使用, 但是跟之前在web.xml中配置的时候相比, 有一个缺点, 无法确定监听器的加载顺序

  • 相关阅读:
    java 读写word java 动态写入 模板文件
    Java代码获取NTP服务器时间
    Web环境使用相对路径发布Webservice
    eclipse 标记任务
    抽象工厂模式
    CentOS 7.0 使用yum 安装 Mariadb
    Centos 7 JDK 安装(默认之前没有安装过)
    深入浅出《设计模式》之外观模式(C++)
    深入浅出《设计模式》之工厂模式(C++)
    深入浅出《设计模式》之简单工厂模式(C++)
  • 原文地址:https://www.cnblogs.com/DONGb/p/7453544.html
Copyright © 2011-2022 走看看