springboot 快捷获取request

2,285 阅读1分钟

有时候我们开发时需要频繁操作request,session对象,可能有些人就会在controller层去写HttpServletRequest入参用来获取request对象,这样写的话如果service层也用的话则又需要层层传入,很是麻烦,下面给大家提供一个获取request的工具类,本质是因为多线程情况下每个线程都有独有的request和session,所以取request一定是取的当前线程的request,不会用冲突

/**
 * requestContext上下文工具类
 */
public class RequestContextHolderUtil {

    /**
     * 获取request
     * @return
     */
    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();
    }

}