[JAVA EE] 拦截器
拦截器
◼ 拦截器(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] 拦截器相关推荐
- Java EE拦截器
历史 我认为重要的是要看一下Java EE中的Interceptor的发展,因为它是从EJB特定的项目开始的,后来又演变成一个单独的规范,现在可供其他Java EE规范扩展,这一事实很简单. 版本1. ...
- 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拦截生命 ...
- java与java ee_Java EE拦截器
java与java ee 历史 我认为重要的是要看一下Java EE中Interceptor的发展,因为它是从EJB特定的项目开始的,后来又演变成一个单独的规范,现在可供其他Java EE规范扩展,这 ...
- java面试 拦截器问题_面试必问:给我说一下Spring MVC拦截器的原理?
拦截器是每个Web框架必备的功能,也是个老生常谈的主题了.本文将分析SpringMVC的拦截器功能是如何设计的,让读者了解该功能设计的原理. 重要接口及类介绍1. HandlerExecutionCh ...
- Java filter拦截器的使用
1.web.xml配置 <!-- 验证是否登录 拦截功能 --><filter><filter-name>isLogin</filter-name>&l ...
- java spring 拦截器_Spring MVC拦截器(Interceptor)的配置及使用
在开发一个网站时可能有这样的需求:某些页面只希望几个特定的用户浏览.对于这样的访问权限控制,应该如何实现呢?拦截器就可以实现上述需求.在 Struts 2 框架中,拦截器是其重要的组成部分,Sprin ...
- Java 注解 拦截器
场景描述:现在需要对部分Controller或者Controller里面的服务方法进行权限拦截.如果存在我们自定义的注解,通过自定义注解提取所需的权限值,然后对比session中的权限判断当前用户是否 ...
- java中拦截器 过滤器 监听器都有什么区别
过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts2的action进行业务逻辑,比如过滤掉非法u ...
- Java中拦截器和过滤器的声明用途和区别
过滤器: 1.基于Servlet框架 2.Oracle公司的任何Java Web框架都可以用 3.可以拦截任何资源,包括 .jsp .java .html等等 拦截器: 1.基于SpringMvc框架 ...
最新文章
- Java必须了解的“递归”与“IO流”!!!
- springMVC项目国际化(i18n)实现方法
- 解决http://localhost:3000/favicon.ico 的404 问题(含案例解析)
- 将CMD内的显示内容输出到txt文件
- c语言数据结构学习心得——栈
- 教材寻找 下载系列1
- HTML罗盘时钟代码
- chromeos java安装_谷歌最新系统ChromeOS安装体验,酷!
- 抖音多画面分屏PR分屏预设 横板竖版手机短视频分屏效果PR预设下载
- wd移动硬盘不能识别_wd移动硬盘读不出来怎么办
- 又一琼,又一琼......
- 信道容量 matlab,离散无记忆信道容量的matlab算法
- 【学习笔记】利用API进行数据采集或获取
- installshield 安装mysql数据库_使用 InstallShield 安装和卸载SQL Server 数据库
- ppt中如何插入页码(如何从第二页插入页码?)
- Java:抽象成类找对象
- 在JAVA中 以下程序_在Java中,以下程序的输出结果是()_学小易找答案
- MySQL 创建表时出现 Tablespace for `xxx`.`xxx` exists.
- python.txt文件的写入和追加
- Android WebView 精简Demo
热门文章
- redisson get()数据报错,missing type id property ‘@class’
- 2022-2028年中国电池制造行业市场供需规模及投资前景预测报告
- LeetCode简单题之环和杆
- LeetCode简单题之检查是否所有 A 都在 B 之前
- LeetCode简单题之学生出勤记录 I
- TensorRT 7.2.1 开发概要(下)
- 交通信号灯检测与行人过马路策略
- 2021年大数据HBase(九):Apache Phoenix的安装
- java面向过程和面向对象
- php token的生成和使用