•使用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重写、隐藏表单域
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)