会话

cookies

通过http  cookies会话跟踪是所有的servlte容器都支持的,容器向客户端发送一个cookie,客户端后续请求到服务器都上传该cookie,明确请求和会话关联,会话跟踪cookie的标准名字必须是JSESSIONID。容器也允许通过容器指定的配置自定义会话跟踪 cookie 的名字。
谷歌浏览器f12


所有 servlet 容器必须提供能够配置容器是否标记会话跟踪 cookie HttpOnly
HttpOnly是为了防止XSS攻击的。详情可看以下链接

点击打开链接

java使用HttpOnly,Servlet 2.5 API 不支持 cookie设置HttpOnly:

response.setHeader("Set-Cookie", "cookiename=value;Path=/;Domain=domainvalue;Max-Age=seconds;HTTPOnly");

ssl会话

安全套接字层,在 HTTPS 使用的加密技术,有一种内置机制允许多个来自客户端的请求被明确识别为同一会话。 Servlet 容器可以很容易地使用该数据来定义会话。


URL 重写

当客户不接受cookie时候,服务器可以跟踪url重写作为会话跟踪基础,URL 重写涉及添加数据、会话 ID、容器解析 URL 路径从而请求与会话相关联。

会话 ID 必须被编码为 URL 字符串中的一个路径参数。参数的名字必须是 jsessionid。下面是一个 URL
含编码的路径信息的例子:

http://www.myserver.com/catalog/index.html;jsessionid=1234

URL 重写在日志、书签、 referer header、缓存的 HTMLURL 工具条中暴露会话标识。在支持 cookie SSL会话的情况下,不应该使用 URL 重写作为会话跟踪机制。

创建会话

当一个会话还没有建立起关系之前都会被认为是一个新的,因为http是基于请求和响应的,在客户端关联会话之前,都应该是新的。如客户端还不知道会话,和客户端选择不加入会话。

与每个会话相关联是一个包含唯一标识符的字符串,也被称为会话 ID。会话 ID 的值能通过调用 javax.servlet.http.HttpSession.getId() 获 取 , 且 能 在 创 建 后 通 过 调 用 javax.servlet.http.HttpServletRequest.changeSessionId()改变


会话范围

HttpSession的范围是在当前上下文有效的,它们包含的属性和所引用的对象是不能再上下文环境共享的。

绑定session属性

servlet 可以按名称绑定对象属性到 HttpSession 实现,任何绑定到会话的对象可用于任意其他的 Servlet,其属于同一个 ServletContext 且处理属于相同会话中的请求。
一 些 对 象 可 能 需 要 在 它 们 被 放 进 会 话 或 从 会 话 中 移 除 时 得 到 通 知 。 这 些 信 息 可 以 从
HttpSessionBindingListener 接口实现的对象中获取。这个接口定义了以下方法,用于标识一个对象被绑定到
会话或从会话解除绑定时。
valueBound
valueUnbound
在对象对 HttpSession 接口的 getAttribute 方法可用之前 valueBound 方法必须被调用。在对象对 HttpSession接口的 getAttribute 方法不可用之后 valueUnbound 方法必须被调用。

会话超时和获取超时时间和最后访问时间

servlte定义了默认的会话超时时间,切可以通过HttpSession的getMaxInactiveInterval方法获取,通过HttpSession 接口的 setMaxInactiveInterval 方法改变超时时间或者是通过web配置

<session-config>
		<session-timeout>1</session-timeout>
	</session-config>

以秒为单位,如果设置小于0将永久不过期。可以通过 getLastAccessedTime方法获取最后的访问时间

多线程问题

在同一个时间可以有多个线程访问同一个会话,那么开发人员保证会话的属性对象在 多线程时候的安全。









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值