会话跟踪机制

一、Cookie
  Cookie是由服务器生成,发送给浏览器,浏览器将Cookie和key/value保存到某个目录的文本文件内,下次请求同一网站时就发送该Cookie给服务器,Cookie是可以被禁止的。

1、在jsp中创建cookie。jsp是调用Cookie对象相应的构造函数Cookie(name,value)用合适的名字来创建Cookie.

            Cookie cookie name=new Cookie("Parameter","Value");

2、Cookie 可以通过HttpServletResponse的addCookie方法加入到Set-Cookie应答头

           reeponse.addCookie(newCookie);
3、Cookde的属性

  1、int getMaxAge     返回Cookie过期之前的最大时间,以秒计算。
  2、String getName() 返回Cookie的名字。名字和值是我们始终关心的两个部分,笔者会在后面详细介绍 getName/setName
  3、voie  setMaxAge(int expiry)以秒计算,设置Cookie过期时间。
4、读取客户端Cookie

   在Cookie发送到客户端前先要创建一个Cookie,然后用addCookie方法发送一个HTTP Header.JSP将调用request.getCookie
   ies()从客户端读入Cookie,调用getCookies()方法返回一个HTTP请求头中的内容对应Cookie对象数组。你只需要用循环访问该数组的各个元素,调用getName方法检查各个Cookie的名字,直至找到目标Cookie,然后对该Cookie调用getValue方法取得与指定名字关联的值。
二、session
  1、session保存在服务器上。Session为javax.servlet.http.HttpSession类实例。
  2、 Session也是key-value的属性对,通过getAttribute(String key)和setAttribute(String key,Object value)。

 3、Servlet中必须使用request来编程式获取HTTPSession对象,JSP中内置了Session对象,若声明<%@page session=”false”%>则不可用。

4、只有访问Servlet、JSP才会创建Session,只访问HTML等静态资源不会创建Session,除非request.getSession(true)强制生成Session。

5、通过getMaxInactiveInterval()和setMaxInactiveInterval()获取和设置Session有效期。web.xml中也可修改。调用Session的invalidate()使Session失效。

6、Session需要使用Cookie作为识别标志,服务器向浏览器发送一个名为JSEEIONID的Cookie,它的值为Session的id。该Cookie的maxAge一般为-1。

7、 浏览器不支持Cookie,则采用 URL地址重写方案。原理,将Session的id信息写入URL地址

session 常用方法

1.void setAttributeStingname, Object value,设定指定名字的属性的值,并将它添加到session会话范围内,如果这个属性是会话范围内存在,则更改该属性的值。value通常为JavaBean

2.ObjectgetAttribute(String name),在会话范围内获取指定名字的属性的值,返回值类型为object,如果该属性不存在,则返回null。

3.Enumeration getAttributeNames(),返回Session中存在的属性名。

4.void removeAttribute(Stringname),删除指定名字的session属性,若该属性不存在,则出现异常。

5.void invalidate(),使session失效。可以立即使当前会话失效,原来会话中存储的所有对象都不能再被访问。

6.String getId(),获取当前的会话ID。每个会话在服务器端都存在一个唯一的标示sessionID,session对象发送到浏览器的唯一数据就是sessionID,它一般存储在cookie中。

7.voidsetMaxInactiveInterval(int interval),设置会话的最大持续时间,单位是秒,负数表明会话永不失效。在web.xml中单位为分钟<session-timeout>

8.intgetMaxInActiveInterval(),获取会话的最大持续时间。

9. long getCreationTime()long getLastAccessedTime()方法可以获取会话创建的时间和最后访问的时间,但其返回值是毫秒,一般需要使用下面的转换来获取具体日期和时间。
三、URL重写

URL重写比较不错会话跟踪方案,即使浏览器不支持cookie或在用户服务禁用cookie的情况下,这种方案也能工作。

四、隐藏表单域

基本语法:

<input type="hidden" name="session" value="value">

猜你喜欢

转载自blog.csdn.net/qq_39277883/article/details/79780670