会话管理和使用

会话管理和使用,第1张

会话管理和使用 • 当前浏览器与服务器间多次的请求、响应关系,被称作一个会话 • 第一次请求表示会话的开始 • 关闭浏览器或超时则表示会话的结束 • 服务器为每个会话创建一个 HttpSession 对象 • 每个会话对象都有一个唯一的 ID • 把用户的数据保存在相应的 HttpSession 对象内

     •使用HttpServletRequest 的 getSession() 方法创建会话

会话创建好以后,可以使用HttpSession接口进行会话的基本使用

会话保存数据

                获取会话保存的数据

 •HttpSession接口中提供了管理会话的方法

方法

说明

String getId()

返回Session 的ID

long getCreationTime()

返回会话被创建的时间

long getLastAccessedTime()

返回会话最后处理时间

void invalidate()

使当前的Session失效,此时Servlet容器会释放HttpSession对象占用的资源

void setAttribute(String name,
Object value)

将一个名/值对保存在HttpSession对象中

Object getAttribute(String name)

根据name参数返回保存在HttpSession 对象中的属性值

•HttpServletRequest接口提供的管理会话的方法 

方法

说明

String getRequestSessionId()

返回与客户端请求相关的Session 的ID。可能与当前的会话ID相同,也可能不相同

boolean isRequestedSessionIdFromcookie()

会话ID是由cookie返回的,就返回true

boolean isRequestedSessionIdFromURL()

会话ID是由重写URL返回的,就返回true

boolean isRequestedSessionIdValid()

如果客户端的会话ID代表的是有效会话,就返回true。会话是无效的,则返回false

 session对象的生命周期

• session 的创建 • 浏览器访问服务器时,服务器为每个浏览器创建不同的 session 对象 • session 的关闭 • 调用 session. invalidate() 方法 , 使 session 对象失效 • 访问时间间隔大于非活动时间间隔, session 对象失效 • 关闭浏览器时, session 对象失效

 会话跟踪技术

• 会话跟踪技术允许服务器确定访问站点的用户、用户访问站点的次数和用户停留站点的时间段 • 客户端和服务器之间的会话 ID 和状态信息,通常有四种方法: • 使用 Servlet API 中的 Session 会话机制(存储在 Web 服务器) • 使用 cookie (存储在客户端浏览器) • URL  重写 :URL  可以在后面附加参数,和服务器的请求一起发送,这些参数为名字 / 值对

                •隐藏表单域:,非常适合步需要大量数据存储的会话应用

什么是cookie?

• cookie 的本意是“小甜饼”,我们俗称“曲奇饼” • 在 JavaWeb 中, cookie 是 HTTP 客户端和 HTTP 服务器之间传送的小块信息,用这类信息将状态添加到无状态的 HTTP 协议中 • 当 HTTP 服务器收到一个请求时,除了被请求的文档外,服务器还会选择返回一些状态信息给客户的浏览器 • 这些状态信息应该由支持 cookie 的客户端存储起来,放在客户端的机器里面 • 客户端任何时候再发送新的请求给服务器,都要首先检查请求的 URL 和所存的 cookies 中的 URL 是否对应

Servlet API中提供了cookie类来实现cookie,并定义了添加cookie和获取cookie的方法

方法

说明

void setMaxAge(int expiry)

设置cookie的最大保存时间,单位秒,正值表示经过设定的秒值后,cookie将过期。负值表示不在客户机上保存cookie,如果用户关闭浏览器时,cookie会被删除,默认设置。0值表示删除现有的cookie

int getMaxAge()

返回以秒表示的cookie的最大保存时间

String getName()

返回在构造方法里为cookie设置的名字

void setValue(String newVal)

给cookie赋值,设置名/值对中值的部分

String getValue()

返回cookie名/值对中值的部分

 禁用cookie

• cookie 是存放在客户端的机器上面,如果客户端的浏览器出于安全方法的考虑,在浏览器的隐私设置中阻止了所有的 cookie • 服务器就没有办法把一些信息写入到客户端,使用 cookie 就没有用了

cookie禁用之解决方法-URL重写 

1)Java Servlet API 中为我们提供了会话跟踪的另一种机制,通常的做法是重写客户请求的 URL ,把 Session ID 添加到 URL 信息中 2)URL 重写其实就是在 URL 后面加上一个 jsessionid 参数, jsessionid 的参数值是唯一的,所以可以跟踪某一会话

     3)HttpServletResponse接口中提供了2种URL重写的方法 

方法

说明

String encodeURL(String url)

重写给定的 url,包含Session  ID

String encodeRedirectURL(String url)

使用sendRedirect方法时,重写给定的 url,包含Session  ID

 隐藏表单域

• 隐藏 HTML 表单域通常是用来存储状态信息 • 隐藏的变量 *** 作就像 HTML 输入域一样,提交页面给服务器时,把该隐藏域的名 / 值对传给服务器 • 客户端的页面是不能看到或是修改隐藏的 HTML 变量的值 总结: • Servlet API 中使用 HttpSession 和 cookie 来跟踪客户的状态 • getSession 方法返回与客户端请求绑定的会话对象

     •会话跟踪的4大技术分别是:使用Session和cookie、URL重写、隐藏表单域 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5693834.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存