一 通过注解扫描完成filter 组件 的注册
1 新建Servlet
import com.sun.net.httpserver.HttpServer;
import org.springframework.beans.factory.annotation.Autowired;
import javax.jws.WebService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
@WebServlet(name="FilterServlets",urlPatterns="/firsts")
public class FilterServlets extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// super.doGet(req, resp);
System.out.println("FilterServlets");
}
}
2 新建FirstFirter
package com.example.demo;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
import java.util.logging.LogRecord;
@WebFilter(filterName ="FirstFirter",urlPatterns ="/firsts")
public class FirstFirter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("进入Filter");
filterChain.doFilter(servletRequest,servletResponse);
System.out.println("离开Filter");
}
}
结果:
进入Filter
FilterServlets
离开Filter
二 通过方法完成 Filter 组件注册
1 新建 Servlets
import com.sun.net.httpserver.HttpServer; import org.springframework.beans.factory.annotation.Autowired; import javax.jws.WebService; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.*; import java.io.IOException; @WebServlet(name="SecondServlets",urlPatterns="/second") public class SecondServlets extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // super.doGet(req, resp); System.out.println("SecondServlets"); } }
2 新建 Filter
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
import java.nio.file.DirectoryStream;
public class SecondFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("进入SecondFilter");
filterChain.doFilter(servletRequest,servletResponse);
System.out.println("离开SecondFilter");
}
}
3 Filter 起动类
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
//@ServletComponentScan
public class App {
public static void main(String[] args)
{
SpringApplication.run(App.class,args);
}
@Bean
public ServletRegistrationBean getServletRegistrationBean()
{
ServletRegistrationBean bean=new ServletRegistrationBean(new SecondServlets());
bean.addUrlMappings("/second");
return bean;
}
@Bean
public FilterRegistrationBean getFilterRegistrationBean()
{
FilterRegistrationBean bean=new FilterRegistrationBean(new SecondFilter());
bean.addUrlPatterns("/second");
return bean;
}
}