SpringBoot * 的使用
作者:久曲键 发布时间:2023-04-27 23:27:27
标签:SpringBoot, ,
一、 * 简介
* 通常通过 * 的方式来执行。
* 的生命周期由IoC
容器管理,可以通过注入等方式来获取其他Bean
的实例,使用更方便。
二、 * 配置使用方式
1、过滤器 * 作用范围
2、 * 的使用
示例代码如下:
package com.rongrong.wiki.interceptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* * :Spring框架特有的,常用于登录校验,权限校验,请求日志打印 /login
*/
@Component
public class LogInterceptor implements HandlerInterceptor {
private static final Logger LOG = LoggerFactory.getLogger(LogInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 打印请求信息
LOG.info("------------- LogInterceptor 开始 -------------");
LOG.info("请求地址: {} {}", request.getRequestURL().toString(), request.getMethod());
LOG.info("远程地址: {}", request.getRemoteAddr());
long startTime = System.currentTimeMillis();
request.setAttribute("requestStartTime", startTime);
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
long startTime = (Long) request.getAttribute("requestStartTime");
LOG.info("------------- LogInterceptor 结束 耗时:{} ms -------------", System.currentTimeMillis() - startTime);
}
}
将 * 加入到配置中,示例代码如下:
package com.rongrong.wiki.config;
import com.rongrong.wiki.interceptor.LogInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import javax.annotation.Resource;
@Configuration
public class SpringMvcConfig implements WebMvcConfigurer {
@Resource
LogInterceptor loginInterceptor;
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginInterceptor)
.addPathPatterns("/**")
.excludePathPatterns("/login");
}
}
重新编译启动,查看结果如下:
三、知识点总结
1、 * 的使用
返回
true
会往后执行返回
false
会结束,可以利用这点来做权限拦截addPathPatterns()
,要拦截请求excludePathPatterns()
,排除请求,不拦截
2、 * 和过滤器的相同与不同
都可以用来统一处理请求,比如:打印日志、权限控制
过滤器依赖于
servlet
容器, * 依赖Spring
框架过滤器不用注入其它类, * 可注入其它类,基于这一点,建议能用 * 的都用 *
来源:https://www.cnblogs.com/longronglang/p/15470625.html
0
投稿
猜你喜欢
- 在 Java 中将 Object 转换为 Int我们可以使用 Object 类来引用我们在 Java 中不知道其类型的任
- 循环结构分两大类,一类是当型,一类是直到型。当型:当布尔值表达式条件为True时,反复执行某语句,当布尔表达式的值为False时才停止循环,
- 引言: 在现代的网络应用程序中,进行HTTP请求是一项常见的任务。Apache HttpClient是一个功能强大且广泛使用的Java库,它
- 什么是 MyBatis?MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。 MyBatis 消除了几乎所有的 J
- 本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下XmlHelperusing System.Xml;us
- 利用Java连接MySQL做登陆界面,供大家参考,具体内容如下1、首先需要建立一个类,在这里,我命名为newLoginnewLogin类的代
- 因为某个项目需要,为团队其他兄弟姐妹开发了一个 XML 分析处理器,并将其设计为一个类库,提供相应的 API 接口。为了方便大家的使用,需要
- SpringBoot @ConditionalOnBean实现原理在SpringBoot1.5.X时判断条件是OR,SpringBoot2.
- 数组:数组可以用来保存多个基本数据类型的数据,也可以用来保存多个对象。数组的长度是不可改变的,一旦初始化数组时就指定了数组的长度(无论是静态
- 目录顶级语句弃元参数仅初始化设置器 (Init only setters)记录类型 (Record)模式匹配增强Type patterns
- 简介FTP 简介FTP 即 文件传输协议(英语:File Transfer Protocol 的缩写)是一个用于计算机网络上在客户端和服务器
- 背景何为延迟队列?顾名思义,延迟队列就是进入该队列的消息会被延迟消费的队列。而一般的队列,消息一旦入队了之后就会被消费者马上消费。场景一:在
- 什么是ByteBuddyByteBuddy是一个java的运行时代码生成库,他可以帮助你以字节码的方式动态修改java类的代码。为什么需要B
- 首先来一道思考题:String str1 = "111111";String str2 = "222222&q
- 1.强引用( Strong Reference )最普遍的引用:Object obj=new Object()抛出OutOfMemoryEr
- 我们在代码中经常使用using保障非托管资源的释放 static void Main(string[] args){
- 一.Worker Thread模式Worker的意思是工作的人,在Worker Thread模式中,工人线程Worker thread会逐个
- 第一部分:Java数据结构要理解Java数据结构,必须能清楚何为数据结构?数据结构:Data_Structure,它是储存数据的一种结构体,
- 1、Date日期输出可读性较差Date date = new Date();System.out.println(date);打印输出的结果
- 什么是ServletContext?根据字面意思即Servlet上下文服务器会为每一个工程创建一个对象,这个对象就是ServletConte