Filter和Listener-超详细讲解

Filter和Listener

  • 1、Filter
    • 1.1、过滤器概念
      • 1.1.1、过滤器的基本概念
      • 1.1.2、过滤器的功能
    • 1.2、过滤器开发
      • 1.2.1、开发过滤器的两个步骤
    • 1.3、FilterConfig 类
    • 1.3、Filter的生命周期
  • 2、Listener
    • 2.1、Servlet监听器概述
      • 2.1.1、Servlet监听器概述
      • 2.1.2、Servlet事件监听器步骤
  • 2.2、监听三个作用域对象创建和销毁的监听器
      • 2.2.1、ServletContextListener详解
      • 2.2.2、HttpSessionListener详解
      • 2.2.3、ServletRequestListener 详解
    • 2.3、监听域属性变化的监听器
      • 2.3.1、监听域属性变化的监听器
      • 2.3.2、监听域属性变化的监听器中的方法
    • 2.4.、监听JAVABEAN在Session域中状态变化的监听器
      • 2.4.1、Javabean在Session中的状态
      • 2.4.2、监听JAVABEAN在Session域中状态变化的监听器

1、Filter

1.1、过滤器概念

1.1.1、过滤器的基本概念

Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。

1.1.2、过滤器的功能

Filter和Listener-超详细讲解_第1张图片

(1)过滤器可以拦截对资源的访问
(2)一个过滤器可以拦截多个资源,一个资源也可能被多个过滤器拦截
(3)所谓的拦截是根据访问的URL地址来确定访问的是哪个资源,确定是否拦截
(4)所谓的拦截其实就是拦截下来代表请求的request和响应的response
(5)拦截后:控制是否允许访问、访问之前和之外做一些额外操作

1.2、过滤器开发

1.2.1、开发过滤器的两个步骤

过滤器

package cn.tedu.filter;

import javax.servlet.*;
import java.io.IOException;

public class MyFilter01 implements Filter {
   

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
   
        Filter.super.init(filterConfig);
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
   
        System.out.println("拦截器开始拦截");
        //拦截器放行,如果不写,不会往下执行
        filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {
   
        Filter.super.destroy();
    }
}

Servlet类

public class MyServlet01 extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        System.out.println("MyServlet01开始输出");
    }
}

配置xml


<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    
    <servlet>
        <servlet-name>myservlet01servlet-name>
        <servlet-class>cn.tedu.filter.MyServlet01servlet-class>
    servlet>
    <servlet-mapping>
        <servlet-name>myservlet01servlet-name>
        <url-pattern>/servlet/myservlet01url-pattern>
    servlet-mapping>

    
    
    
    <filter>
        <filter-name>FirstFilterfilter-name>
        <filter-class>cn.tedu.filter.MyFilter01filter-class>
    filter>
    <filter-mapping>
        <filter-name>FirstFilterfilter-name>
        

你可能感兴趣的:(java,servlet,服务器)