栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

过滤器(Filter)的实现方式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

过滤器(Filter)的实现方式

Filter是单例的。实现过滤器(Filter)首先需要实现Filter类。
具体实现方式有3种:

  1. 实现Filter类,使用@Component注解注册到Spring
  2. 实现Filter类,使用@Configuration注解,用配置bean的方式装配
  3. 实现Filter类,使用@WebFilter注解

1.实现Filter类,使用@Component注解注册到Spring

package com.example.filter;

import org.springframework.stereotype.Component;

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


@Component
public class MyFilter implements Filter {

	//创建之后,马上执行;Filter会在服务器启动时就创建!
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("MyFilter.init");
    }


     
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("MyFilter start");
        Long startTime = new Date().getTime();
        chain.doFilter(request, response);
        System.out.println("MyFilter 耗时:" + (new Date().getTime() - startTime));
        System.out.println("MyFilter end");
    }

	 //销毁之前执行!在服务器关闭时销毁
    @Override
    public void destroy() {
        System.out.println("MyFilter.destroy>>>>>>>>>");
    }
}

2.实现Filter类,使用@Configuration注解,用配置bean的方式装配
以上代码不变,但是MyFilter类需要去掉@Component。然后再自定义一个配置类

package com.example.filter;

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

public class MyFilter implements Filter {

	//创建之后,马上执行;Filter会在服务器启动时就创建!
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("MyFilter.init");
    }

     
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("MyFilter start");
        Long startTime = new Date().getTime();
        chain.doFilter(request, response);
        System.out.println("MyFilter 耗时:" + (new Date().getTime() - startTime));
        System.out.println("MyFilter end");
    }

	 //销毁之前执行!在服务器关闭时销毁
    @Override
    public void destroy() {
        System.out.println("MyFilter.destroy>>>>>>>>>");
    }
}
package com.example.filter;

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyConfig {
    @Bean
    public FilterRegistrationBean registrationBean(){
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(new MyFilter());
        registrationBean.addUrlPatterns("
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("MyFilter start");
        Long startTime = new Date().getTime();
        chain.doFilter(request, response);
        System.out.println("MyFilter 耗时:" + (new Date().getTime() - startTime));
        System.out.println("MyFilter end");
    }

    //销毁之前执行!在服务器关闭时销毁
    @Override
    public void destroy() {
        System.out.println("MyFilter.destroy>>>>>>>>>");
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/283952.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号