拦截器

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

运行结果:

IDEA控制台输出

  • 注意要把上一篇Filter里设置的黑名单注释掉~~

[JAVA EE] 拦截器相关推荐

  1. Java EE拦截器

    历史 我认为重要的是要看一下Java EE中的Interceptor的发展,因为它是从EJB特定的项目开始的,后来又演变成一个单独的规范,现在可供其他Java EE规范扩展,这一事实很简单. 版本1. ...

  2. JavaEE Tutorials (25) - 使用Java EE拦截器

    25.1拦截器概述380 25.1.1拦截器类381 25.1.2拦截器生命周期381 25.1.3拦截器和CDI381 25.2使用拦截器381 25.2.1拦截方法调用382 25.2.2拦截生命 ...

  3. java与java ee_Java EE拦截器

    java与java ee 历史 我认为重要的是要看一下Java EE中Interceptor的发展,因为它是从EJB特定的项目开始的,后来又演变成一个单独的规范,现在可供其他Java EE规范扩展,这 ...

  4. java面试 拦截器问题_面试必问:给我说一下Spring MVC拦截器的原理?

    拦截器是每个Web框架必备的功能,也是个老生常谈的主题了.本文将分析SpringMVC的拦截器功能是如何设计的,让读者了解该功能设计的原理. 重要接口及类介绍1. HandlerExecutionCh ...

  5. Java filter拦截器的使用

    1.web.xml配置 <!-- 验证是否登录 拦截功能 --><filter><filter-name>isLogin</filter-name>&l ...

  6. java spring 拦截器_Spring MVC拦截器(Interceptor)的配置及使用

    在开发一个网站时可能有这样的需求:某些页面只希望几个特定的用户浏览.对于这样的访问权限控制,应该如何实现呢?拦截器就可以实现上述需求.在 Struts 2 框架中,拦截器是其重要的组成部分,Sprin ...

  7. Java 注解 拦截器

    场景描述:现在需要对部分Controller或者Controller里面的服务方法进行权限拦截.如果存在我们自定义的注解,通过自定义注解提取所需的权限值,然后对比session中的权限判断当前用户是否 ...

  8. java中拦截器 过滤器 监听器都有什么区别

    过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts2的action进行业务逻辑,比如过滤掉非法u ...

  9. Java中拦截器和过滤器的声明用途和区别

    过滤器: 1.基于Servlet框架 2.Oracle公司的任何Java Web框架都可以用 3.可以拦截任何资源,包括 .jsp .java .html等等 拦截器: 1.基于SpringMvc框架 ...

最新文章

  1. Java必须了解的“递归”与“IO流”!!!
  2. springMVC项目国际化(i18n)实现方法
  3. 解决http://localhost:3000/favicon.ico 的404 问题(含案例解析)
  4. 将CMD内的显示内容输出到txt文件
  5. c语言数据结构学习心得——栈
  6. 教材寻找 下载系列1
  7. HTML罗盘时钟代码
  8. chromeos java安装_谷歌最新系统ChromeOS安装体验,酷!
  9. 抖音多画面分屏PR分屏预设 横板竖版手机短视频分屏效果PR预设下载
  10. wd移动硬盘不能识别_wd移动硬盘读不出来怎么办
  11. 又一琼,又一琼......
  12. 信道容量 matlab,离散无记忆信道容量的matlab算法
  13. 【学习笔记】利用API进行数据采集或获取
  14. installshield 安装mysql数据库_使用 InstallShield 安装和卸载SQL Server 数据库
  15. ppt中如何插入页码(如何从第二页插入页码?)
  16. Java:抽象成类找对象
  17. 在JAVA中 以下程序_在Java中,以下程序的输出结果是()_学小易找答案
  18. MySQL 创建表时出现 Tablespace for `xxx`.`xxx` exists.
  19. python.txt文件的写入和追加
  20. Android WebView 精简Demo

热门文章

  1. redisson get()数据报错,missing type id property ‘@class’
  2. 2022-2028年中国电池制造行业市场供需规模及投资前景预测报告
  3. LeetCode简单题之环和杆
  4. LeetCode简单题之检查是否所有 A 都在 B 之前
  5. LeetCode简单题之学生出勤记录 I
  6. TensorRT 7.2.1 开发概要(下)
  7. 交通信号灯检测与行人过马路策略
  8. 2021年大数据HBase(九):Apache Phoenix的安装
  9. java面向过程和面向对象
  10. php token的生成和使用