四种会话跟踪技术

1.Cookie:

Cookie它是存储在客户端或者客户端浏览器上的文本文件,很容易就可以查看到.
所以,不能使用Cookie存储敏感数据,比如银行卡密码
不能使用Cookie来做必要的功能。
Cookie不能存储中文
使用URL编码来简介存储中文
username = URLEncoder.encode(username)
//解码
name = URLDecoder.decode(name)

2.Session

Session:会话
用户使用浏览器,进行一系列的访问,这一个过程就是一个会话
也就是说,多个请求共享一个会话
会话在第一次访问的时候就被创建

HttpSession:默认有效时间是30分钟
使用代码设置session的失效时间
session.setMaxInactiveInterval(100);
使用配置文件设置session的失效时间
<session-config>
<session-timeout>200</session-timeout>
</session-config>
让session立刻失效
session.invalidate();
注意:
当使用代码和配置文件同时配置session的失效时间的时候
以小的时间为准[注意,他们的单位都是分钟]

Session实现的机制:它是基于Cookie
当用户第一次访问的时候,会自动生成一个Cookie,用来记录当前Session的ID值。
这个Cookie的key是JSESSIONID value就是Session 的ID值

当Cookie被阻止,应该强制把JSESSIONID传过去,使用URL重写
<a href=<%=response.encodeURL("ViewAllUserServlet")%>>查看所有用户强制传送JSESSIONID</a>

3.Hidden

.隐藏表单域:<input type="hidden">,非常适合步需要大量数据存储的会话应用。

4.url 重写

URL 重写:URL 可以在后面附加参数,和服务器的请求一起发送,这些参数为名字/值对。 见 http://blog.csdn.net/xh16319/article/details/8464055

为了防止用户禁用cookie,可以使用URL重写技术来实现会话跟踪!

url重写原理:当服务器程序调用request.getSession();代码时,其会先看request.getCookies()方法中有没有名为JSESSIONID的cookie带过来,如果没有,就看URL有没有被重写(即附带JSESSIONID),如果有,则从服务器中找key为JSESSIONID的session对象,如果都没有,则创建一个新的session。如果用户禁用了cookie,则只能通过URL重写方式实现会话跟踪!

原文地址:https://www.cnblogs.com/arvins/p/8419228.html