SpringBoot 实现Filter过滤器和Servlet

一、Filter过滤器

1、配置类

package com.example.demo.filter;

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

import java.util.HashMap;
import java.util.Map;

@Configuration
public class BeanFilterConfig {

    @Bean
    public FilterRegistrationBean filterRegistration(){
        System.err.println("filter开始初始化。。。");

        FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean(new BeanFilter());
        //添加拦截路径
        filterRegistrationBean.addUrlPatterns("/beanServlet");
        //拦截器别名
        filterRegistrationBean.setName("beanFilter");

        //初始化参数
        Map<String, String> map=new HashMap<>();
        map.put("p1","filter1");
        map.put("p2","filter2");
        filterRegistrationBean.setInitParameters(map);
        return filterRegistrationBean;
    }

}

2、业务类

package com.example.demo.filter;

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

public class BeanFilter implements Filter {

    private  FilterConfig config;

    @Override
    public void init(FilterConfig config) throws ServletException {
        System.err.println("初始化Filter。。。");
        this.config=config;
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.err.println("Filter开始拦截。。。");

        System.err.println("Filter初始化参数1:"+config.getInitParameter("p1"));
        System.err.println("Filter初始化参数2:"+config.getInitParameter("p2"));

        //放行请求
        filterChain.doFilter(servletRequest,servletResponse);
        System.err.println("filter已放行请求。。。");
    }

    @Override
    public void destroy() {

    }
}

二、Servlet

1、配置类

package com.example.demo.servlet;

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

@Configuration
public class BeanServletConfig {

    @Bean
    public ServletRegistrationBean servletRegistrationBean() {
        System.err.println("Servlet开始初始化。。。");
        ServletRegistrationBean reg = new ServletRegistrationBean(new BeanServlet(),"/beanServlet");
        //servlet别名
        reg.setName("beanServlet");
        //servlet初始化参数
        reg.addInitParameter("p1", "servlet1");
        reg.addInitParameter("p2", "servlet2");

        //表示每次都需要初始化
        reg.setLoadOnStartup(1);
        return reg;
    }
}

2、业务类

package com.example.demo.servlet;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class BeanServlet extends HttpServlet {

    private ServletConfig config;

    @Override
    public void init(ServletConfig config) throws ServletException {
        System.err.println("初始化Servlet。。。");
        this.config=config;
    }

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.err.println("Servlet开始处理业务。。。");

        System.err.println("Servlet初始化参数1:"+config.getInitParameter("p1"));
        System.err.println("Servlet初始化参数2:"+config.getInitParameter("p2"));

        System.err.println("servlet业务处理完毕。。。");
    }

    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

}

三、测试

用这个filter来拦截这个servlet。访问 http://localhost:81/beanServlet。
控制台打印结果:

Filter开始拦截。。。
Filter初始化参数1:filter1
Filter初始化参数2:filter2
Servlet开始处理业务。。。
Servlet初始化参数1:servlet1
Servlet初始化参数2:servlet2
servlet业务处理完毕。。。
filter已放行请求。。。

发布了17 篇原创文章 · 获赞 1 · 访问量 311

猜你喜欢

转载自blog.csdn.net/weixin_43424932/article/details/104023654