JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

《Servlet》第29节:FilterConfig过滤器配置类及初始化参数介绍

wys521 2024-11-01 15:15:37 精选教程 38 ℃ 0 评论

前面我们学习了ServletConfig配置类,这个ServletConfig类保存的是Servlet程序的信息,例如:Servlet名称、Servlet初始化参数、ServletContext上下文对象等等。对于Filter过滤器来说,它也有过滤器配置信息,使用FilterConfig类来表示,通过这个FilterConfig配置对象,可以获取到Filter过滤器名称、Filter初始化参数、以及ServletContext上下文对象。下面就来介绍一下FilterConfig类的使用。

1.1、FilterConfig提供的方法

查看FilterConfig接口源代码,可以发现,该接口中提供了下面这几个方法:

其中getFilterName()方法的作用是获取当前这个Filter过滤器的名称,getServletContext()方法用于获取上下文对象,getInitParameterNames()方法用于获取当前Filter过滤器中配置的所有初始化参数名称,getInitParameter()方法用于获取指定初始化参数名称的参数值。

FilterConfig配置对象,会在Filter过滤器实例化的过程中,将FilterConfig配置对象传递到init()初始化方法中,之后就可以在init()方法里面,使用FilterConfig对象进行后续的操作。

1.2、FilterConfig案例代码

FilterConfig案例代码如下所示:

package com.gitcode.filter;

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

/**
 * @version 1.0.0
 * @Date: 2024/2/21 14:04
 * @Author ZhuYouBin
 * @Description:
 */
public class FirstFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // 1、获取过滤器名称
        String filterName = filterConfig.getFilterName();
        System.out.println("获取过滤器名称: " + filterName);

        // 2、获取上下文对象
        ServletContext context = filterConfig.getServletContext();

        // 3、获取过滤器所有的初始化参数名称
        Enumeration<String> initParameterNames = filterConfig.getInitParameterNames();
        while (initParameterNames.hasMoreElements()) {
            System.out.println("初始化参数名称: " + initParameterNames.nextElement());
        }

        // 4、获取指定名称的过滤器参数值
        String username = filterConfig.getInitParameter("username");
        System.out.println("username参数值: " + username);
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("执行过滤器doFilter()方法...");
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {
        System.out.println("执行过滤器的销毁方法...");
    }
}

web.xml配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<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_3_1.xsd"
         version="3.1"
         metadata-complete="true">

    <display-name>工程名称</display-name>
    <description>
        工程描述
    </description>

    <!-- 配置Servlet -->
    <servlet>
        <servlet-name>DemoServlet</servlet-name>
        <servlet-class>com.gitcode.servlet.DemoServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>DemoServlet</servlet-name>
        <url-pattern>/demoServlet</url-pattern>
    </servlet-mapping>

    <!-- 配置过滤器 -->
    <filter>
        <filter-name>FirstFilter</filter-name>
        <filter-class>com.gitcode.filter.FirstFilter</filter-class>
        <!-- 过滤器的初始化参数 -->
        <init-param>
            <param-name>username</param-name>
            <param-value>Tom-2024</param-value>
        </init-param>
        <init-param>
            <param-name>password</param-name>
            <param-value>admin123456</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>FirstFilter</filter-name>
        <!-- 拦截 /demoServlet 请求路径 -->
        <url-pattern>/demoServlet</url-pattern>
    </filter-mapping>

</web-app>

当我们启动Tomcat容器的时候,Filter过滤器就会被实例化,此时就会在控制台打印出下面的日志:

以上,就是FilterConfig配置类及其初始化参数介绍。

今天就到这里,未完待续~~

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表