cookie
Cookie是一种浏览器和服务器交互数据的方式。
Cookie是由服务器端创建,但是不会保存在服务器。
创建好之后,发送给浏览器。浏览器保存在用户本地。
下一次访问网站的时候,就会把该Cookie发送给服务器。
创建一个cokkie:
Cookie c = new Cookie("name", "cookie");//创建一个cookie,名字是name,值是cookie c.setMaxAge(24 * 60 * 60);//设置该cookie可以保留一天 c.setPath("/");//Path表示访问服务器的所有应用都会提交这个cookie response.addCookie(c);//把这个cookie保存到浏览器
获得cookie
Cookie cookie = request.getCookies("name");//获得name为name的cookie
session
Session对应的中文翻译是会话。
会话指的是从用户打开浏览器访问一个网站开始,无论在这个网站中访问了多少页面,点击了多少链接,都属于同一个会话。 直到该用户关闭浏览器为止,都属于同一个会话。
session存储类似于Map,以键值对形式保存
session.setAttribute("name", "huhu");
session.getAttribute("name");
区别
存储数据量方面:session 能够存储任意的 java 对象,cookie 只能存储 String 类型的对象
一个在客户端一个在服务端。因Cookie在客户端所以可以编辑伪造,不是十分安全。
Session过多时会消耗服务器资源,大型网站会有专门Session服务器,Cookie存在客户端没问题。
两者间联系与通信
用户首次与Web服务器建立连接的时候,服务器会给用户分发一个 SessionID作为标识。SessionID是一个由24个字符组成的随机字符串。用户每次提交页面,浏览器都会把这个SessionID包含在 HTTP头中提交给Web服务器,这样Web服务器就能区分当前请求页面的是哪一个客户端。这个SessionID就是保存在客户端的,属于客户端Session。其实客户端Session默认是以cookie的形式来存储的。