SpringMVC 拦截器

引言

SpringMVC 的拦截器特性类似于过滤器,用于页面控制器/处理器进行的预处理和后处理

拦截器的使用步骤

自定义拦截器类
复制代码
package com.dt.interceptor;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

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

/**
 * @author Binge
 * @desc 拦截器类
 * @date 2020/10/15 上午11:28
 */
public class MyInterceptor extends HandlerInterceptorAdapter {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("拦截点1");
        return true; //返回值 true:请求通过   false:请求被拦截
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("拦截点2");
        super.postHandle(request, response, handler, modelAndView);
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("拦截点3");
        super.afterCompletion(request, response, handler, ex);
    }
}

以上代码可以看到,定义一个拦截器类有三个拦截方法(拦截点),其中 preHandle 拦截方法与其他两个有一点不同,就是这个方法有返回值,可以提前将请求拦截,让页面控制器无法收到请求。

SpringMVC 添加拦截器配置
复制代码
<mvc:interceptors>
        <mvc:interceptor>
            <!--配置拦截器拦截的请求路径-->
            <mvc:mapping path="/comment"/>
            <!--配置拦截器类的路径-->
            <bean class="com.dt.interceptor.MyInterceptor" />
        </mvc:interceptor>
    </mvc:interceptors>

以上配置中,path 属性用于设置拦截器可以拦截的请求,而且支持 /* 通配符,表示拦截所有请求。

拦截器的使用场景

  • 日志记录

记录请求信息的日志,以便进行信息监控、信息统计以及页面浏览次数等

  • 权限管理

检测登录权限,如果没有登录直接返回到登录或注册页面

  • 性能监控

可以通过拦截器在进入页面控制器之前记录开始时间,在处理完记录结束时间,从而得到该请求的处理时长

  • 加/解密码

可以通过拦截器对密码进行加/解密

posted @   Binge-和时间做朋友  阅读(221)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示