SpringBoot中filter过滤拦截

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);
    }
}
发布了68 篇原创文章 · 获赞 7 · 访问量 2507

猜你喜欢

转载自blog.csdn.net/Cui6023056/article/details/105021999