【发布时间】:2017-11-09 17:44:58
【问题描述】:
我读到要在 servlet 中保持会话,cookie 以 JSESSIONID 的名称保存在客户端。
我也检查了它,发现 的 cookie localhost,名称为 JSESSIONID,带有 一些随机字符串值。
所以我尝试通过在 servlet 中创建 JSESSIONID cookie 来手动创建会话,但是当我尝试获取会话时它不起作用。
这里发生了什么?
除了 cookie(JSESSIONID) 之外,还有什么其他东西可以存储在某个地方用于创建会话吗?
如果不是,为什么我无法参加会议?
请帮忙。
我用来创建 cookie 和获取会话的代码
package sessionHandling;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/sessionhandling")
public class SessionHandling extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletOutputStream out = response.getOutputStream();
out.print("Hello Mr.! How are you?");
HttpSession session = request.getSession(false);
if(session != null){
out.println("You are logged in.");
out.println("session found with "+session.getId());
out.println("session found with "+session.getLastAccessedTime());
}else{
//session = request.getSession(true);
Cookie JSESSIONID = new Cookie("JSESSIONID", "12345");
JSESSIONID.setMaxAge(-1);
response.addCookie(JSESSIONID);
System.out.println("Cookie Created");
out.print("You are not logged in");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
【问题讨论】:
标签: java session servlets cookies jsessionid