在servlet中跟踪会话有哪些不同的方法。是否可以使用隐藏文件?
8 回答
有三种方式
- 隐藏的表单域
- 饼干
- 网址编码。
其中一种方法是使用HttpSession
您可以使用创建会话
HttpSession session = request.getSession();
或者你可以使用HttpSession session = request.getSession(true)
. 这两个语句都意味着如果与该用户有关联的会话,则返回该会话或创建一个新会话。如果false
通过,则不会创建新会话。
可以通过以下方式维护会话
- 隐藏的表单域。
- 饼干
- 编码网址
- 会话对象看看这里的链接
在 servlet 中跟踪会话的不同方法是:
使用会话 API:一个示例代码是:
//store the username object in the session-scope HttpSession session = request.getSession(); session.setAttribute("username",username);
要检索会话属性,请使用 session.getAttribute()
Username username = (Username) session.getAttribute("username");
使用 cookie API:示例代码:
String name = request.getParameter("username"); Cookie c = new Cookie("username",name); response.addCookie(c);
应该注意的是,使用 cookie 进行会话管理的一个主要缺点是有时客户端可能会关闭 cookie。
使用 URL 重写:URL 重写策略不像 cookie 策略那样透明。它可以以如下形式实现:
//present the form out.println("<form action='"+response.encodeURL("login.")+"'");
也可以使用隐藏的表单域。
假设一个实现 HTTP 会话的 servlet 从三个不同的客户端(浏览器)接收 HTTP 请求。对于每个客户端请求,servlet 必须能够确定客户端请求所属的 HTTP 会话。每个客户端请求仅属于 servlet 跟踪的三个客户端会话之一。目前,该产品提供了三种跟踪会话的方式:
With cookies
With URL rewriting
With SSL information
会话可以以流动的方式保持
- 隐藏的表单域:- 动态生成表单时使用 full
- 饼干
- 网址重写
- HttpSession
HttpSession
取决于cookies 。它使用 cookie 将会话 ID 存储在客户端系统中。
有多种会话跟踪机制
- 会话 API
- 饼干
- 网址重写
- 隐藏的表单域
隐藏表单域 ->
在这种情况下,我们使用隐藏的文本字段来维护用户的状态。记住客户信息只是程序员的伎俩。