SpringBoot中filter过滤拦截
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 因为是基于servlet3.x版本的 过滤器 所以需要用到注解
*/
@Order(1) //代表被过滤的顺序 数字越小越先被过滤
@WebFilter(urlPatterns = "/api/*",filterName = "userFilter")
public class UserFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("做一些初始化操作");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
//逻辑
String username = request.getParameter("username");
if ("tom".equals(username)){
//如果当前用户是tom 就放行
filterChain.doFilter(servletRequest,servletResponse);
}else{
//拦截
response.sendRedirect("/login.html");
}
System.out.println("");
}
@Override
public void destroy() {
System.out.println("销毁对象,释放资源");
}
}
然后在启动类上 加上@ServletComponentScan注解
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
@ServletComponentScan //作用用于扫描servlet组件
public class Springboot03Application {
public static void main(String[] args) {
SpringApplication.run(Springboot03Application.class, args);
}
}