Spring / Spring Boot全局获取HttpServletRequest、HttpServletResponse对象

1.前言

你还在 Controller 传一个 HttpServletRequest 或 HttpServletResponse 到下面好几层以便获取到该对象进行处理吗??

那就 out 咯,曾经我也是这么做的,哈哈哈~

今天写代码想起来要获取这个对象,一下子想不起来叫什么了,只隐隐约约记得叫 HttpRequestContextHolder 来获取,但是,错了,其实是RequestContextHolder,难怪自动提示来不出来。

于是,我决定还是写个文章记录一下方便以后自己找

2.代码

java 复制代码
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = requestAttributes.getRequest();
HttpServletResponse response = requestAttributes.getResponse();

比如你也可以稍微封装一下,搞一个类静态调用分别获取 Request、Response,随后你就可以在项目的任何位置调用得到这两个对象以便在请求前、返回前做一些别的处理了。

这里,我只是举个例子:

java 复制代码
public class MyServletContextHolder {

    private static ServletRequestAttributes requestAttributes = null;


    private static void lazyInit() {
        if (null == requestAttributes) {
            synchronized (MyServletContextHolder.class) {
                if (null == requestAttributes) {
                    requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
                }
            }
        }
    }


    public static HttpServletRequest getHttpServletRequest() {
        lazyInit();
        return requestAttributes.getRequest();
    }


    public static HttpServletResponse getHttpServletResponse() {
        lazyInit();
        return requestAttributes.getResponse();
    }
}
相关推荐
平凡的Joe8 分钟前
Quarkus WebSocket 入门实践
java·后端
x***J34812 分钟前
后端服务限流算法,计数器与滑动窗口
java·开发语言
元Y亨H17 分钟前
IDEA + Maven 实战:如何优雅地切换 Dev 和 Prod 环境进行打包?
spring boot
Slow菜鸟28 分钟前
MinIO教程(三)| Spring Boot 集成 MinIO 高级篇(分片上传、加密与优化)
spring boot·minio
-大头.40 分钟前
响应式编程实战:WebFlux与RSocket深度解析
java·开发语言
.豆鲨包1 小时前
【Android】深入理解Activity的生命周期和IntentFilter
android·java
s***55811 小时前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
lkbhua莱克瓦241 小时前
集合进阶6——TreeMap底层原理
java·开发语言·笔记·学习方法·hashmap
JEECG低代码平台1 小时前
GitHub 十大 Java 语言 AI 开源项目推荐
java·人工智能·github
小咖张1 小时前
idea 启动失败,不加载自己的配置文件
java·ide·intellij-idea