1、Cookie:存放在本地终端上的片段数据
数据量较小(一小段数据);有时也用其复数形式cookies;
Cookie存在一定的安全隐患(可以查看到浏览器访问记录):如果禁用cookie,网站的所有地址必须动态生成(URL重写技术);Cookie还是要正常使用,它所存在的安全隐患,应该由程序和一些专门安全软件进行控制。
Cookie中的内容通常是英文字母、阿拉伯数字、一些特殊符号,不能出现中文汉字。
Cookie机制:
当客户端第一次访问服务器时,服务器可以给客户端写一个片段数据(cookie),cookie存档在客户端的硬盘上(或浏览器缓存中),下次再访问服务器,客户端浏览器会带着对应cookie一起访问,服务器根据cookie中内容,做相应的处理(辨别用户)。
Cookie位置:
如果cookie的有效期>0,存放在硬盘上;如果cookie的有效期=0,存放在浏览器的缓存中;如果cookie有效期<0,删除cookie。
Cookie API常用方法:
setValue(String newValue):给当前 cookie重新赋值
setMaxAge(int expiry):该Cookie失效时间,单位秒
setPath(String uri):设置Cookie的使用路径
setSecure(boolean flag):是否使用安全传输协议
设置cookie:
//创建一个cookie
Cookie cookie = new Cookie("xname","zsf");
//设置cookie值
cookie.setValue("wangwu");
//设置有效期
cookie.setMaxAge(60*60*24*7);//设置有效期:一周
//设置cookie到客户端响应中
response.addCookie(cookie);
//响应页面
response.sendRedirect("/Servlet/CookieServlet2");
获取 Cookie:
//获取cookie
Cookie[] cookies = request.getCookies();
if (cookies!=null && cookies.length>0){
for (Cookie cookie:cookies){
System.out.println(cookie.getName() + "->" + cookie.getValue()
+ "->" + cookie.getMaxAge());
}
}
Cookie应用场景:自动登录,保存用户名、密码,在一定时间不用重新登录
2、Session会话:是客户端连接服务器的会话,它可以把客户端信息保存在服务器中
Session机制:
客户端浏览器第一次访问服务器动态资源时,web服务器会为每个用户分配一个内存空间,即session空间。空间一旦分配,服务器会为分配的内存空间(session)取一个唯一的标识符(sessionId=48位16进制数据),然后把sessionID采用cookie机制发送给客户端浏览器,有效期=0(临时cookie),以后客户端浏览器每次访问服务器都会提交sessionID值,服务器根据sessionID值区分哪一个session空间属于这个用户(请求)
Session:没有记忆功能,采用cookie技术实现了记忆功能。
Session与cookie的区别:
1)存放的位置:Cookie存放在客户端,session保存在服务端
2)安全性:比较而言,cookie的安全性比session要弱
3)网络传输量:cookie通过网络在客户端与服务器端传输,而session保存在服务器端,不需要传输。