ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring Boot 学习(一) 拦截器

2021-06-29 20:33:48  阅读:200  来源: 互联网

标签:拦截器 Spring Object Boot request WebMvcConfigurer 拦截 public


Ctrl+F12  查看此类的方法,关系有哪些

 

 

 

必须继承这HandlerInterceptor 这个类

类中有三个方法 

public class LoginIntercepter implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//        目标方法执行之前

        return false;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        //   目标方法执行完成以后

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
//        页面渲染之后
    }
}

 

拦截器
1.配置好拦截器要拦截哪些请求
2.把这些配置放在容器中
@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//        目标方法执行之前
        HttpSession session =  request.getSession();  //用于获取request信息
        Object loginUser = session.getAttribute("login");//这里的login是保存的用户信息,获取当前用户信息
        if(loginUser != null) {
            return true;   //放行
        }
        request.setAttribute("msg","请先登陆");   //获取到错误信息,前提是当用户没有登陆或密码错误,此时记录的是错误提示信息
        request.getRequestDispatcher("/").forward(request,response);      //重定向到默认
        return false;
    }

 

创建一个config类

所有处理web事务的接口是在WebMvcConfigurer 

@Configuration
public class AdminConfig implements WebMvcConfigurer {  //所有定制web功能的都是WebMvcConfigurer接口

}

其中WebMvcConfigration 中有addInterceptors这个方法

 

 

 

拦截住了默认是一片空白,所以在上面添加了一个拦截信息

@Configuration
public class AdminConfig implements WebMvcConfigurer {  //所有定制web功能的都是WebMvcConfigurer接口
    public void addInterceptors(InterceptorRegistry registry) { //重写这方法
        registry.addInterceptor(new LoginIntercepter())    //添加一个拦截器(LoginIntercepter是拦截器类,实现了接口HandlerInterceptor)
                                .addPathPatterns("/**")     //(/**)表示默认拦截所有请求   add表示要拦截哪些url请求 
                                .excludePathPatterns("/","/login");  //exclude表示放行的是哪些,此时静态资源也被拦截,css和js生效

    }
}

因为配了/** 表示拦截所有,所以此时把静态资源也给拦截了

此时进行添加不拦截文件

方法一、  添加放行文件夹,静态资源文件夹里的内容

 

.excludePathPatterns("/","/login","/css/**","/js/**","/fonts/**") 

 

总结

拦截器:

1.编写一个拦截器,实现HandlerInterceptor接口

2.拦截器注册到容器中(实现WebMvcConfigurer的addInterceptors)

3.指定拦截规则,【如果拦截所有那么静态资源也会被拦截】

 

 

补充:

日志的使用

import lombok.extern.slf4j.Slf4j;
@Slf4j   在类名前加上注解
//        这里可以添加一个日志,获取请求路径
        String requesURI = request.getRequestURI();
        log.info("preHandle拦截的请求路径是{}",requesURI);

 

拦截器的执行过程

preHandle ->   postHandle   ->  afterCompletion

 

标签:拦截器,Spring,Object,Boot,request,WebMvcConfigurer,拦截,public
来源: https://www.cnblogs.com/YuyuFishSmile/p/14951845.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有