java服务端从任意位置获取HttpSession

一般情况下,httpSession我们只会在控制器中会使用到,如下所示,会把HttpSession用作参数来获取。

@RequestMapping(value = "/findOne")
    public Object findOne(HttpSession httpSession) {
        Object user = httpSession.getAttribute("user");
        // someting...
    }

但是如果我们要在service层获取一些其他的util方法内获取httpSession的话,调用方法一层一层传递过去就会略显繁琐,所以就想到有没有什么办法可以在项目的任意位置获取到httpSession,故找到了以下的方法,非常方便。

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

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

public class SessionUtil {
    public static HttpSession getHttpSession() {
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        return request.getSession();
    }
}

你可能感兴趣的:(java服务端从任意位置获取HttpSession)