版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/aiyaya_/article/details/78975893
前言
在开发spring web项目时,我们很多的Controller层代码都需要获取一下,HttpServletRequest、HttpServletResponse和HttpSession等对象,我们普遍的方式是在Controller类下的方法参数中直接获取,例如:

@Slf4j
@ResponseResult
@RestController
@RequestMapping("/users")
public class UserController {

@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public User addUser(@Validated @RequestBody User user, HttpServletRequest request, HttpServletResponse response) {
log.info(JsonUtil.object2Json(request));
log.info(JsonUtil.object2Json(response));
return user;
}

}

但是这样获取,我们有时需要在service层代码中获取他们的附带信息时,就需要不断的将这两个参数下传到其使用的方法内,这导致有一些方法参数看起来特别允于,其实获取这几参数的方式有很多种,今天给大家分享一个获取他们的工具类

代码实现
package com.zhuma.demo.util;

import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
* @desc 应用级对象获取工具类
*
* @author zhumaer
* @since 9/18/2017 3:00 PM
*/
public class RequestContextHolderUtil {

public static HttpServletRequest getRequest() {
return getRequestAttributes().getRequest();
}

public static HttpServletResponse getResponse() {
return getRequestAttributes().getResponse();
}

public static HttpSession getSession() {
return getRequest().getSession();
}

public static ServletRequestAttributes getRequestAttributes() {
return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes());
}

public static ServletContext getServletContext() {
return ContextLoader.getCurrentWebApplicationContext().getServletContext();
}

}

代码解释
代码的逻辑是很简单的,主要其实就是用了ContextLoader这个工具类,在它的内部会把这些 request、response、session对象都放入ThreadLocal下,当你想获取的时候自然也就是当前线程下的对象信息了。

结束语
看似简单的工具,却能给我们省下很多的代码逻辑,希望这个工具你能够喜欢O(∩_∩)O~
---------------------
作者:筑码-井哥
来源:CSDN
原文:https://blog.csdn.net/aiyaya_/article/details/78975893
版权声明:本文为博主原创文章,转载请附上博文链接!

工具类分享之获取Request/Response工具类《RequestContextHolderUtil》的更多相关文章

  1. springmvc 获取request response

    RequestContextHolder 获取request public HttpServletRequest getRequest() { return ((ServletRequestAttri ...

  2. 在spring的业务层获取request,response

    1.直接通过controller层获取到传输到业务层2.SpringMVC提供的RequestContextHolder可以直接获取代码: RequestAttributes requestAttri ...

  3. aop代理方式引起的spring注入bean(实现类)与获取bean(实现类)出错

    描述: 现象一 :A 为 接口,AImpl 为 A 的实现类,且 AImpl 受 aop 扫描,且 aop 无特殊配置   此时若:Spring 中 注入 AImpl 类型的bean,获取一样     ...

  4. java中获取request与response对象的方法

    Java 获取Request,Response对象方法   第一种.参数 @RequestMapping("/test") @ResponseBody public void sa ...

  5. 7-EasyNetQ之Request & Response

    EasyNetQ也支持Request/Response这种方式的消息模式.这种方式很容易在client/Server应用中执行,客户端发送一个请求到服务器,服务器然后处理请求后返回一个响应.和传统的R ...

  6. Struts2获取request的几种方式汇总

    Struts2获取request三种方法 struts2里面有三种方法可以获取request,最好使用ServletRequestAware接口通过IOC机制注入Request对象. 在Action中 ...

  7. 反射01 Class类的使用、动态加载类、类类型说明、获取类的信息

    0 Java反射机制 反射(Reflection)是 Java 的高级特性之一,是框架实现的基础. 0.1 定义 Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对 ...

  8. 获取request参数的工具类

    package cn.edu.hactcm.util; import java.io.File; import java.io.FileOutputStream; import java.io.IOE ...

  9. jeecg中的一个上下文工具类获取request,session

    通过调用其中的方法可以获取到request和session,调用方式如下: HttpServletRequest request = ContextHolderUtils.getRequest();H ...

随机推荐

  1. nginx web优化

    一  隐藏版本号 在nginx配置文件http里面添加: server_tokens off; 二  设置nginx默认登入用户   nginx编译安装的时候 事先创一个不能登入系统的普通用户 使用普 ...

  2. 2019长安大学ACM校赛网络同步赛 J Binary Number(组合数学+贪心)

    链接:https://ac.nowcoder.com/acm/contest/897/J 来源:牛客网 Binary Number 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32 ...

  3. web框架-(五)Ajax

    Ajax即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术,AJAX = 异步 JavaScript和X ...

  4. PCRE does not support \L, \l, \N{name}, \U, or \u...

    PCRE does not support \L, \l, \N{name}, \U, or \u... 参考文章:YCSUNNYLIFE 的 <php 正则匹配中文> 一.报错情景: 使 ...

  5. map1

    map2.insert(make_pair("sale", 1)); map2.count("development");//key为development的数 ...

  6. pyqt5--动画

    动画类别继承结构图 天子骄龙

  7. IP地址(参考百度百科)

    题目1:用子网掩码划分网络时,如果划分8个子网,则需要4位.因为24-2>=8.(全0代表网络自身,全1代表广播地址,所以减2) 以C类地址为例,(1)8个子网,则4位子网,主机号为后4位,主机 ...

  8. Springboot(2.0.0.RELEASE)+spark(2.1.0)框架整合到jar包成功发布(原创)!!!

    一.前言 首先说明一下,这个框架的整合可能对大神来说十分容易,但是对我来说十分不易,踩了不少坑.虽然整合的时间不长,但是值得来纪念下!!!我个人开发工具比较喜欢IDEA,创建的springboot的j ...

  9. DevExpress.XtraGrid.Views.Grid.GridView

    private void SetView() { GridView gridView = (GridView)this.DefaultView; if (gridView != null) { gri ...

  10. NOIP2018 D1T3赛道修建

    题目链接:Click here Solution: 最小值最大,考虑二分一个答案\(k\) 考虑在子树内先匹配,最后传递一个值给自己的父亲(因为每条边只能用一次,所以一颗子树最多传递一个值) 那么我们 ...