springboot自定义一个简单的拦截器

springboot创建拦截器,自己定义一个拦截器类并实现***HandlerInterceptor***方法

public class LoginIntercepter implements HandlerInterceptor{
    //目标方法执行之前
    //此方法是在所有方法之前执行所以我们可以在次编写拦截的逻辑
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Object user = request.getSession().getAttribute("loginuser");
        if(user==null){
            request.setAttribute("msg","请先登录");
            request.getRequestDispatcher("/login").forward(request,response);
            return false;
        }else{
            return true;
        }
    }
    @Override
    public void (HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    }
}

拦截器创建好后并没有完成,还需要我们将拦截器类注册到springboot中才能生效。
另写一个配置类继承***WebMvcConfigurerAdapter***方法:

@Configuration
public class MyConfig extends WebMvcConfigurerAdapter {

    public void addViewControllers(ViewControllerRegistry registry) {
        //super.addViewControllers(registry);
        registry.addViewController("/add").setViewName("pages-login");
    }

    @Bean
    public WebMvcConfigurerAdapter webMvcConfigurerAdapter(){
        WebMvcConfigurerAdapter adapter = new WebMvcConfigurerAdapter() {

            //注册拦截器
            //由于我们需要主动拦截一些访问,例如没有登录就想进入后台界面,我们需要拦截
            @Override
            public void addInterceptors(InterceptorRegistry registry) {
                //new的是刚刚写好的拦截器类
                registry.addInterceptor(new LoginIntercepter()).addPathPatterns("/main.html")
                        .excludePathPatterns("/add","/login","/add/login");
            }
		   //addPathPatterns()方法添加要拦截的访问地址。excludePathPatterns()方法是排除拦截的地址就是不拦截这些地址
            @Override
            public void addViewControllers(ViewControllerRegistry registry) {
                //不用处理静态资源
                registry.addViewController("/login").setViewName("pages-login");
                registry.addViewController("/main.html").setViewName("index");
            }

        };
        return adapter;
    }
    @Bean
    public LocaleResolver localeResolver(){
        return new MyLocaleRes();
    }
}

上面我想拦截main.html。拦截后直接跳到登录界面并给出提示。拦截成功。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值