一、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已放行请求。。。