servlet的session管理

在servlet里调用httpsession方法是 request.getSession(); 第一次调用时会生成一个新的session(session.isNew() 返回true)。getSession()还有个带boolean型参数的方法。getSession(false)表示只能取存在的session,如果没有则返回null。

客户端和httpsession交互时通过存在cookie里的sessionId来确认身份,每次的request都会包含这个sessionId。如果客户端的浏览器不允许cookie的话,只能采用将sessionId存在url后面这种方式了,采用这种方式的话,必须对url进行解码:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
    response.setContentType(“text/html”);
    PrintWriter out = response.getWriter();
    HttpSession session = request.getSession();
    out.println(“<html><body>”);
    out.println(“<a href=\”” + response.encodeURL(“/BeerTest.do”) + “\”>click me</a>”);
    out.println(“</body></html>”);
}

或者像这样:
response. encodeRedirectURL(“/BeerTest.do”)

这些都是在服务器端做的,因为只有服务器知道sessionId。
可通过
session.invalidate();

来强制关闭session。

session cookies会在session结束后消失,但也可以一直保留cookies这样服务器就会记住这个用户一样。一般情况下
HttpServletRequest.getCookies();
HttpServletResponse.addCookie();
还有Cookie类可以对它进行操作。

你可能感兴趣的:(html,浏览器,servlet)