在新项目中,有些接口,在调用之前,需要进行一系列的验证,需要过滤功能
在实现Spring Boot项目中的过滤器之前,先回顾下SpringMVC框架的项目中,自定义过滤器是如何实现的
-自定义过滤器类,实现Filter,代码如下:
public class LoginFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
}
@Override
public void destroy() {
}
}
-在web.xml中配置,什么情况下需要进行过滤
-如果请求匹配到多个过滤器,则执行的顺序按照在xml中的配置的顺序来.所以如果需要考虑filter的执行顺序,按顺序配置
loginFilter
com.springmvc.LoginFilter
loginFilter
/*
在springboot项目中,省去了springmvc的xml配置代码,直接一个类上加上几个注解即可实现自定义的过滤器
@Component
@ServletComponentScan
@WebFilter(urlPatterns = "/login/*",filterName = "loginFilter")
@Order(1)
public class LoginFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
}
@Override
public void destroy() {
}
}
-@Component 这个注解的目的是将LoginFilter交给容器来处理,也就是让loginFilter起作用
-@ServletComponentScan 这个是用来扫描@WebFilter的,让@WebFilter起作用
-@WebFilter 是用来配置针对于什么链接做过滤,filter的名称是什么
-@Order是用来定义过滤器的执行顺序,多个过滤器的情况下,值越小,过滤器越先被执行.