Cookie : 一种浏览器与服务器交互数据的方式, 由服务器创建但不会放在服务器, 而是存在本地浏览器, 下一次访问就会把它发送给服务器.
Cookie c = new Cookie("name", "song"); //新建一个cookie
response.addCookie(c); //保存在浏览器中
Session : 用户打开浏览器访问一个网站开始, 无论在这个网站中访问了多少页面,点击了多少链接, 都属于同一个会话. 直到该用户关闭浏览器为止, 都属于同一个会话.
HttpSession session = request.getSession(); //获得当前request中的session
session.setAttribute("name","song"); //session中保存数据
session.getAttribute("name"); -----> song //session中获得数据
Thinking : 既然Cookie和Session都可以set值(保存数据), 那两者又有什么区别呢? 首先你要明白Cookie与Session的关联, 两者都是Web应用中的会话技术, 只不过存储位置不同, 试想一个场景, 有两个用户 X 与 Y 在双十一都要访问某宝, X的购物车中有一本<< JAVA设计模式>>需要下单, Y购物车中有一本<<三体>>需要下单, 那某宝怎么让他们都能相应的看到自己的对应购物车物品呢? 这是就需要一把钥匙 - cookie, 当X和Y在第一次访问某宝时, 某宝会在他们的浏览器上保存一个cookie,像这样("jsessionid","14141XXX") 但XY两用户是不同jsessionid, 当他们访问某宝时, 会带上该cookie, 服务器会根据该cookie找到对应的session,并得到其中的数据, 所以你可以理解为 cookie 为XY访问某宝的钥匙, 而session为存放购物车数据的仓库, 要注意session不只是应用到上述的场景中,也可以应用到验证登录用户名,密码上.
总结 : 你可以用cookie访问到你在web服务器上的私人session仓库, 每个人的cookie是不同的, 所以对应的session也是不同的, 但是要记住session中存放的数据为一次回话的数据, 所以说当你关闭浏览器或某网页时, 上次的浏览数据可能就没有了.
网友评论