springboot项目添加拦截器

版权声明:天才在于积累,聪明在于勤奋 https://blog.csdn.net/weixin_42685022/article/details/82259510

springboot项目添加拦截器

拦截器的作用:URL访问权限过滤、session用户是否存在、拦截controller请求等等。

那么在这篇文章中,主要就其中是一种方法做一些整理,方便以后自己回忆。

我利用上次自己搭建的springboot初始项目,将项目进一步完善,逐渐添加功能。项目搭建步骤可以参考我的另外一篇博文:https://blog.csdn.net/weixin_42685022/article/details/82215893

添加拦截器的步骤:

1、创建一个类实现HandlerInterceptor接口,并重写方法。具体代码如下所示:

package com.example.springboottest1.interceptor;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Component
public class userLoginInterceptor implements HandlerInterceptor {
    /*
	 * 视图渲染之后的操作
	 */
    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception {

        System.out.println("执行到了afterCompletion方法");
    }

    /*
     * 处理请求完成后视图渲染之前的处理操作
     * 通过ModelAndView参数改变显示的视图,或发往视图的方法
     */
    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception {

        System.out.println("执行到了postHandle方法");
    }

    /*
     * 进入controller层之前拦截请求
     * 返回值:表示是否将当前的请求拦截下来  false:拦截请求,请求别终止。true:请求不被拦截,继续执行
     * Object obj:表示被拦的请求的目标对象(controller中方法)
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) throws Exception {

        System.out.println("执行到了preHandle方法");
        System.out.println(obj);
          //判断用户是否登录
//        if(request.getSession().getAttribute("session_user") == null){
//
//            response.sendRedirect("userLogin");
//            return false;
//        }


        return true;
    }
}

2、创建一个类实现WebMvcConfigurer接口,具体代码如下所示:

package com.example.springboottest1.interceptor;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;


@Configuration
public class sessionInterceptor implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        /**
         * 自定义拦截器,添加拦截路径和排除拦截路径
         * addPathPatterns():添加需要拦截的路径
         * excludePathPatterns():添加不需要拦截的路径
         * 在括号中还可以使用集合的形式,如注释部分代码所示
         */
        registry.addInterceptor(new userLoginInterceptor()).addPathPatterns("/user/queryAllUser").excludePathPatterns("/user/loginHtml");

//        List list = new ArrayList();
//        list.add("/user/loginHtml");
//        list.add("/user/registerpage");
//        list.add("/user/uregister");
//        list.add("/user/userLogin");
//
//        registry.addInterceptor(userLoginInterceptor).addPathPatterns("/**").excludePathPatterns(list);
    }
}

3、拦截结果:

 

经过自己测试,上面的代码是可用的,如果有错误希望能指出来,共同学习。

猜你喜欢

转载自blog.csdn.net/weixin_42685022/article/details/82259510
今日推荐