getSession()、getSession(false)、g
2018-11-12 本文已影响0人
苏小小北
做java项目中有的时候需要通过cookie-session的方式来通信,cookie有个JSESSIONID的参数值,JESSIONID对应服务器中的session,session中保存了用户的各种信息和状态,通过cookie-session来实现登录状态的。
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()