springboot3增加拦截器

本文介绍了如何在SpringBoot3.x项目中创建和配置一个用户登录拦截器,包括创建拦截器类、启用拦截器、设置拦截和排除路径,以及如何在配置类中注册拦截器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 {

    }
}

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

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

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"
                        ,"/"
                }
        ); // 注册拦截器并指定排除的路径模式
    }

}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

影孓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值