一般情况下,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();
}
}