getSession()、getSession(false)、getRequestedSessionId()的区别

做java项目中有的时候需要通过cookie-session的方式来通信,cookie有个JSESSIONID的参数值,JESSIONID对应服务器中的session,session中保存了用户的各种信息和状态,通过cookie-session来实现登录状态的。


getSession()、getSession(false)、getRequestedSessionId()的区别_第1张图片
JSESSIONID

问题就是,当用户登录后,需要将JSESSIONID返回给前端,下次请求将会带着cookie信息发送请求。可是,怎么获取session id呢。
在HttpServletRequest对象有两种方式来获取id

1.HttpServletRequest.getSession().getId()

先通过HttpServletRequest获取HttpSession对象,然后再获取id

        HttpSession session = request.getSession(true);
        String sessionId = session.getId();

getSession()与getSession(true)相同,与getSession(false)区别是:
getSession(true)会先判断当前请求是否有session,没有就创建一个新的
getSession(true)当前请求不存在session时,就返回null
如果想要获取请求中的用户信息,就用getSession(true)。
如果想要返回当前请求后生成sessionId,就用getSession(false)。

2.HttpServletREquest.getRequestedSessionId()

        String sessionId = request.getRequestedSessionId();

getRequestedSessionId()是获取请求中预期的sessionId,也就是通过cookie中JESSIONID信息来获取session。
如果想要获取请求中cookie信息,就用getRequestSessionId()

你可能感兴趣的:(getSession()、getSession(false)、getRequestedSessionId()的区别)