会话跟踪技术

HTTP是一种无状态协议,它不能保存客户的信息,即一次响应完成之后连接就断开了,下一次的请求需要重新连接,所以当用户在同一网站的多个页面之间转换时,根本无法确定是否是同一个客户,而会话跟踪技术就可以解决这个问题。

有四种方法可以实现会话跟踪技术:URL重写、隐藏表单域、Cookie、Session。

1)URL传递参数:URL是Web上特定页面的地址,URL传递参数就是在URL结尾添加一个附加参数以标识该会话,把会话ID通过URL的信息传递过去(这些参数为名字/值对),以便在服务器端进行识别不同的用户。url?参数名=值&参数名=值

<div class="menu_title">
		<a href="oneArticle.jsp?id=<%=rs.getInt("id")%>"><%=rs.getString("articletitle")%></a>
		<%=rs.getString("articletime")%>
		<a href="lanmu.jsp"><%=rs.getString("menuname")%></a>
</div>

2)隐藏表单域:<input type="hidden">,将会话ID添加到HTML表单元素中提交到服务器,此表单元素并不在客户端显示

<form action="loginChat.jsp" method="post">
		帐号:<input type="text" name="username" value="<%=cuserName %>" /><br /> 
		密码:<input type="password" name="userpwd" value="<%=cuserPwd %>" /><br /> 
		<input type="submit" value="我要登录" /><br /> 
</form>

3)Cookie:Cookie是Web服务器发送给客户端的一小段信息,客户端请求时可以读取该信息发送到服务器端,进而进行用户的识别。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再次请求该网站时,浏览器会把请求的网址连同Cookie一同提交给服务器,服务器检查该Cookie,以此来辨认用户状态。

客户端可以采用两种方式来保存这个Cookie对象,一种方式只是保存在浏览器的缓存中,称为临时Cookie,浏览器关闭后这个Cookie对象将消失。另外一种方式是以文件的形式保存在浏览器的临时文件夹中,称为永久Cookie。以后客户端只要访问该网站,就会将这个Cookie再次发送到服务器上。前提是在这个Cookie的有效期内。

4)Session:每一个用户都有一个不同的session,各个用户之间是不能共享的,是每个用户所独享的,在session中可以存放信息。 当第一次请求服务器的时候,在服务器中会自动创建Session对象,服务器在响应时,会将Session对象的ID通过临时Cookie的方式响应给浏览器,浏览器在以后的请求过程中,都会先获取临时Cookie中的SessionID,在请求过程中,会带上SessionID一起发送给服务器,服务器收到请求后,会先判断SessionID是否存在,如果不存在,说明是第一次请求,如果存在,证明这次请求和上次请求是同一个浏览器发送的;如果有多个浏览器同时请求服务器,服务器会根据SessionID找到对应的浏览器;

Cookie与Session的区别:

1.Cookie是存在浏览器中的,Session是存在服务器中的;

2.Cookie的安全性要低于Session,可以分析存放在本地的COOKIE并进行COOKIE欺骗。

3.Cookie可能会被用户禁用;

4.Session中保存的是对象,Cookie中保存的是字符串。

5.Session的数据是存在服务器内存中,关掉浏览器,会清空Session。当访问增多,会比较占用服务器性能。临时性Cookie存在浏览器的缓存中,关掉浏览器,会清空,永久性Cookie是存在临时文件中,到达有效期前,一直存在。

猜你喜欢

转载自fallagain.iteye.com/blog/2280053