1.什么是会话跟踪?
客户端打开与服务器的连接发出请求到服务器响应客户端请求的全过程称之为会话,而会话跟踪是对同一个用户对服务器的连续的请求和接受响应的监视。浏览器与服务器是通过Http协议通信,因为Http是无状态协议,不会保存信息,当同一个用户发送第二次请求时,Http不知他是否为同一个用户,这是需要会话跟踪技术来进行判断。
2.举例阐述四种会话跟踪技术的特点,应用场景
a.session:
每一个用户都有一个不同的session,各个用户之间是不能共享的,是每个用户所独享的,在session中可以存放信息。当发生对话时,在服务器端会创建一个session对象,产生一个sessionID来标识这个session对象,然后将这个sessionID放入到临时Cookie中发送到客户端,下一次访问时,客户端会将上次发送过来的sessionID发送到服务器,在服务器端进行识别不同的用户 Session是依赖Cookie的,如果Cookie被禁用,那么session也将失效
session虽然是可靠的,但是会占用服务器的资源,当许多同时使用服务器时,会消耗大量的服务器资源,所以尽量不要使用session。
Session主要是存储用户的私人信息。
//创建session对象
HttpSession session =req.getSession();
//req.getSession(true);
b.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>
c.隐藏表单域
隐藏表单域是指在表单form内声明一个type类型为hidden的input标签,用来传递数据(可以在页面内先用JQuery获取要传递的值存入这个input标签的value中)和做一些其它的功能。它的优点是提供了一种往form中存取数据的方法。
基本语法:
<input type="hidden" name="field_name" value="value">
HTML语言创建普通隐藏域
<input type="hidden" name="hdncount" value="值">
JavaScript语言创建隐藏域
<script>
function add(value) { var value= 1 document.all.divHidden.innerHTML="<input type=hidden name=hdncount value=" + value+ ">"; }
</script>
d.Cookie
Cookie是将信息存储到客户端或者用文本保存,并不会占用服务器的资源,是大多数使用的会话跟踪技术,但是因为cookie的不可靠性,使得人们对是否使用它保存质疑并且部分的网站会禁用cookie。
cookie的主要应用场景:
(一):判断用户是否登陆过网站,以便下次登录时能够直接登录。如果我们删除cookie,则每次登录必须从新填写登录的相关信息
(二):另一个重要的应用是“购物车”中类的处理和设计。用户可能在一段时间内在同一家网站的不同页面选择不同的商品,可以将这些信息都写入cookie,在最后付款时从cookie中提取这些信息,当然这里面有了安全和性能问题需要我们考虑了。
String uid = req.getParameter("uid");
String pwd = req.getParameter("pwd");
//创建Cookie名字为uid
Cookie cookie = new Cookie("uid", uid);
//保存时间为60分钟
cookie.setMaxAge(60*60);
//发送到客户端
response.addCookie(cookie);
3.Cookie与Session的区别
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用cookie。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
所以最好是个人信息等放到session里,其他信息放入cookie。