zoukankan      html  css  js  c++  java
  • 工具类分享之获取Request/Response工具类《RequestContextHolderUtil》

    版权声明:本文为博主原创文章,未经博主允许不得转载。 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
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    Java集合(4):Iterator(迭代器)
    Java集合(3):Vector && Stack
    Java集合(2):LinkedList
    面试题29:顺时针打印矩阵
    面试题28:对称的二叉树
    面试题27:二叉树的镜像
    面试题26:树的子结构
    面试题24:反转链表
    面试题25:合并两个排序的链表
    面试题23:链表中环的入口结点
  • 原文地址:https://www.cnblogs.com/Jeely/p/10811908.html
Copyright © 2011-2022 走看看