自定义拦截器

本文介绍了如何在Spring MVC中实现自定义拦截器,包括介绍拦截器的作用、实现步骤和验证过程。拦截器可用于日志记录、性能监控、身份验证等功能。实现包括实现HandlerInterceptor接口、重写相关方法,并在配置中添加拦截器。

自定义拦截器

介绍

​ 拦截器是Java Web框架(如Spring MVC)中的一个组件,用于在请求 到达处理程序之前处理器返回处理之后视图渲染之前执行某些操作。

​ 拦截器可以用于执行日志记录、性能监控、身份验证、授权、请求转换等操作。拦截器通常是通过实现特定接口或注解来实现的,例如Spring MVC中的HandlerInterceptor接口。

实现拦截器的步骤

以Spring MVC为例

一、自定义类实现HandlerInterceptor接口

public class MyInterceptor implements HandlerInterceptor {  

}

二、重写方法

    @Override  
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  
        // 在请求处理(Controller)之前执行的操作
        // 可以在这里进行身份验证、授权等操作  
        String num = request.getParameter("num");
        if (num != null) {
            System.out.println("拦截器放行");
            return true;
        }
        System.out.println("拦截器拦截");
        return false; // 返回true表示继续处理请求,返回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 {  
        // 在整个请求处理结束之后执行的操作  
        // 可以在这里进行资源清理等操作  
    }  

三、添加拦截器配置

自定义的拦截器定义以及重写完方法之后,拦截器并不会生效,需要添加到WebMvcConfigurer中才会生效,在WebMvcConfigurer接口中重写addInterceptors方法添加拦截器配置。

@Configuration
public class MvcConfig implements WebMvcConfigurer {

    // 添加Mvc配置
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptor());
    }
}

验证:

①定义一个测试Controller

@RestController
@RequestMapping("/mvc")
public class MvcController {

    @GetMapping("/one")
    public String getInfo() {
        return "Hello Word";
    }
}

②首先访问路径不带num参数

在这里插入图片描述

此时已经可以说明我们自定义的拦截器成功生效

③访问路径带num参数
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值