[JAVA EE] 拦截器

本文介绍了Spring MVC中的拦截器(Interceptor)如何使用,主要应用于用户请求的拦截处理,例如登录状态验证、权限检查以及系统日志记录。通过创建自定义拦截器`MyInterceptor`,并在`MyWebConfig`中配置,实现了对请求的拦截,日志输出客户端的IP地址和请求路径,同时展示了如何设置拦截和排除的URL路径。
摘要由CSDN通过智能技术生成

拦截器

◼ 拦截器(Interceptor)主要用于拦截用户请求并作相应的处理。
◼ 基于Java的反射机制,属于面向切面编程(AOP)的一种运用。
◼ 应用场景:验证用户登录状态、权限验证、记录系统日志、通用处理等。


拦截器类基本代码框架
public class MyInterceptor implements HandlerInterceptor {
//在处理请求之前被调用。可以进行权限校验、安全控制等处理;
boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception;
// 设置拦截的业务的条件
// return true; 放行(满足条件时放行,继续业务处理)
// return false; 拦截(不满足条件时,跳转到其他处理)
}

拦截器示例的目录结构
在这里插入图片描述

  • MyInterceptor.java
  • 加载的是 org.slf4j.Logger 包
  • Logger 类相关的包比较多,注意别加载错了

package com.example.demo.Interceptor;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.Date;

public class MyInterceptor implements HandlerInterceptor {
    //声明日志对象
    private final Logger log = LoggerFactory.getLogger(this.getClass());
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String ip=request.getRemoteAddr(); //获得客户端 ip 地址
        String path=request.getServletPath(); //获得客户端Servlet请求路径
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d = new Date(); //获得当前系统日期时间
        String ds = sdf.format(d); //格式化date对象
        log.info("时间"+ds+":"+ip+"访问了"+path); // 日志输出
        return true; // 放行(关键点)
    }
}
  • MyWebConfig.java
package com.example.demo.config;

import com.example.demo.Interceptor.MyInterceptor;
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 MyWebConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) { //加载拦截器
        registry.addInterceptor( new MyInterceptor() ) //加载自定义的拦截器
                .addPathPatterns("/**") //拦截请求的路径 /** 表示所有请求
                .excludePathPatterns("/","/css/*","/images/*","/js/*"); //不拦截的请求,如首页、静态资源等
    }
}

运行结果:
在这里插入图片描述
IDEA控制台输出
在这里插入图片描述

  • 注意要把上一篇Filter里设置的黑名单注释掉~~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值