当前位置:   article > 正文

springboot3增加拦截器_springboot3 拦截器

springboot3 拦截器

springboot3增加拦截器


在Spring Boot中添加拦截器可以通过以下步骤完成:
1.创建自定义的拦截器类。该类需要实现HandlerInterceptor接口并重写其中的preHandle、postHandle和afterCompletion等方法来处理相应的业务逻辑。


import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

/**
 * 用户登录拦截器
 */
public class LoginInterceptor implements HandlerInterceptor {

    /**
     * 在请求被处理之前进行操作
     *
     * @param request
     * @param response
     * @param handler
     * @return 返回true表示继续执行后续的拦截器或Controller;返回false则不再执行后续的拦截器或Controller
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 判断当前请求是否需要被拦截
        if (request.getSession().getAttribute("user") == null) {
            // 未登录则重定向到登录页面
            response.sendRedirect("/login");
            return false;
        } else {
            return true;
        }

    }

    /**
     * 在请求被处理之后但视图还未渲染时进行操作
     *
     * @param request
     * @param response
     * @param handler
     * @param modelAndView
     * @throws Exception
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    /**
     * 在整个请求结束之后(包括视图已经渲染)进行操作
     *
     * @param request
     * @param response
     * @param handler
     * @param ex
     * @throws Exception
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62

2.配置拦截器。在Spring Boot项目的配置文件(如application.properties或application.yml)中添加以下内容:

# application.yml
spring:
  mvc:
    interceptor:
      enabled: true # 开启拦截器功能
      path-patterns: /** # 设置拦截路径模式,这里使用/**表示所有URL都会被拦截
      exclude-path-patterns: /login # 设置排除的路径模式,这里使用/login表示登录页面不会被拦截
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3.注册拦截器。创建一个配置类,将自定义的拦截器注入到Spring容器中:


import com.itasen.asenmanageweb.handlerInterceptor.LoginInterceptor;
import org.springframework.context.annotation.Bean;
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 InterceptorConfig implements WebMvcConfigurer {
    //登录拦截器
    private final LoginInterceptor loginInterceptor = new LoginInterceptor();

    @Bean
    public LoginInterceptor getLoginInterceptor() {
        return this.loginInterceptor;
    }

    /**
     * 排除拦截页面
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(getLoginInterceptor()).excludePathPatterns(
                new String[]{
                        "/login"
                        ,"/"
                }
        ); // 注册拦截器并指定排除的路径模式
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

4.运行程序测试。当发送HTTP请求时,自定义的拦截器就会按照配置的路径模式对请求进行拦截和处理了。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/690028
推荐阅读
  

闽ICP备14008679号