如何使用out扩展HttpServlet类来生成新的会话ID。是否必须扩展HttpServlet类&是否必须使用doGet方法
来创建新的会话IDpublic class LoginSupport extends ActionSupport {
public void prepare() {
HttpSession session = ServletActionContext.getRequest().getSession();
session.invalidate();
//How to genarate new session id
}
}
答案 0 :(得分:3)
调用HttpSession#invalidate()
后,您可以通过调用HttpServletRequest#getSession()
来创建新会话。
例如
public void prepare() {
final HttpServletRequest request = ServletActionContext.getRequest();
request.getSession().invalidate();
// generate new session (and id)
final HttpSession newSession = request.getSession();
}
服务器的下一个HTTP响应应包含新的会话ID,例如
Set-Cookie: JSESSIONID=6a303082951311647336934;path=/
来自https://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServletRequest.html#getSession--
getSession
HttpSession getSession()
返回与此请求关联的当前会话,或者如果请求没有会话,则创建一个。
答案 1 :(得分:1)
在Servlet 3.1或更新版本(Java EE 7)上时,只需使用HttpServletRequest#changeSessionId()
。
request.changeSessionId();
它不会使会话无效,只是更改JSESSIONID
Cookie的值。