使用@WebFilter注解时 必须有@ServletComponentScan注解将带有@WebFilter的类包含进去。
package com.guoxiaocha;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
/**
* 启动类
*
* @author guoxiaocha
* @date 2022/01/26 11:59
*/
@SpringBootApplication
@ServletComponentScan // 必须有一个注解将带有@WebFilter的类包含进去。
public class WebApplication {
public static void main(String[] args) {
SpringApplication.run(WebApplication.class, args);
}
}
package com.guoxiaocha.filters;
import org.springframework.core.annotation.Order;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
* @author guoxiaocha
* @date 2022/01/27 8:51
*/
@WebFilter(urlPatterns = "/test/*",filterName = "myFilter")
@Order(1) // filter顺序 越小越在前
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)servletRequest;
String requestURI = request.getRequestURI();
String method = request.getMethod();
System.out.println(requestURI + "---"+ method);
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
SpringBootApplication 上使用@ServletComponentScan 注解后
Servlet可以直接通过@WebServlet注解自动注册
Filter可以直接通过@WebFilter注解自动注册
Listener可以直接通过@WebListener 注解自动注册
也可以通过 【@Component+@Order】实现
更多推荐