springboot、拦截器

1.添加配置文件

//@Configuration 声明这是一个配置类,相当于一个xml文件
@Configuration
public class WebConfiguraion {

    @Bean
    public FilterRegistrationBean testFilterRegistrationBean(){
        
        //加载自定义过滤器
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        //设置过滤器
        registrationBean.setFilter(new MyFilter());
        //指定过滤连接
        registrationBean.addUrlPatterns("/*");
        registrationBean.addInitParameter("paraname", "paramvalue");
        registrationBean.setName("MyFilter");
        
        //设置优先级
        registrationBean.setOrder(1);
        return registrationBean;
    }

    //配置多个过滤器(order数值越小优先级越高)
     @Bean
    public  FilterRegistrationBean nextFilterRegistrationBean(){

    //加载自定义过滤器
    FilterRegistrationBean registrationBean = new FilterRegistrationBean();
    //设置过滤器
    registrationBean.setFilter(new MyFilter2());
    //指定过滤连接
    registrationBean.addUrlPatterns("/*");
    registrationBean.addInitParameter("paraname", "paramvalue");
    registrationBean.setName("MyFilter2");

    //设置优先级
    registrationBean.setOrder(2);
    return registrationBean;

    
}

2.配置我的过滤器(MyFilter一样配置此处省略)

public class MyFilter implements Filter {

    @Override
    public void destroy() {
        // TODO Auto-generated method stub
        System.out.println("销毁!");
        
    }

    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
            throws IOException, ServletException {
        // TODO Auto-generated method stub
        System.out.println("执行你的过滤器!");
        
        //进行转换
        HttpServletRequest request=(HttpServletRequest) arg0;
        HttpServletResponse response=(HttpServletResponse) arg1;
        //设置字符编码
        request.setCharacterEncoding("UTF-8");  
        response.setCharacterEncoding("UTF-8"); 
        
        String path=request.getRequestURI();
        System.out.println("被拦截的地址是:"+path);
       if(path.indexOf("/us/login")>-1){//登录页面不过滤
            System.out.println("放行:/us/login");
            arg2.doFilter(request, arg1);//递交给下一个过滤器
            return;
        }
        if ("/us/checklogin".equals(request.getRequestURI())) {
            System.out.println("放行:us/checklogin");
            arg2.doFilter(request, arg1);
            return;
        }
        
        User user = (User) request.getSession().getAttribute("users");  
        
        
        if (user !=null) {
            //放行
            System.out.println("已登录!");
            arg2.doFilter(request, arg1);
        }else {
            System.out.println("不放行!!");
            //arg2.doFilter(request, arg1);
            System.out.println("重定向到:/us/login");
            response.sendRedirect(request.getContextPath()+"/us/login");
        
        }
        
        
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
        
    }
    

}
原文地址:https://www.cnblogs.com/dztHome/p/10337411.html