欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

会话跟踪技术

程序员文章站 2024-03-20 11:41:46
...

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是存在临时文件中,到达有效期前,一直存在。

相关标签: 会话跟踪