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();
    }
}
相关推荐
西部风情2 小时前
聊聊并发、在线、TPS
android·java·数据库
顾漂亮4 小时前
Token快过期的三种续期方案
java·spring·状态模式
牢七6 小时前
mwf攻防。
java
不爱编程的小九九6 小时前
小九源码-springboot088-宾馆客房管理系统
java·开发语言·spring boot
抹香鲸之海7 小时前
Prometheus+Grafana实现Springboot服务监控
spring boot·grafana·prometheus
Pluto_CSND7 小时前
Java实现gRPC双向流通信
java·开发语言·单元测试
摇滚侠7 小时前
Spring Boot 3零基础教程,WEB 开发 内嵌服务器底层源码分析 笔记48
spring boot·笔记
songx_997 小时前
idea建有servlet类的web项目
java·servlet·intellij-idea
武子康7 小时前
Java-154 深入浅出 MongoDB 用Java访问 MongoDB 数据库 从环境搭建到CRUD完整示例
java·数据库·分布式·sql·mongodb·性能优化·nosql
原来是猿8 小时前
谈谈环境变量
java·开发语言