Servlet(17)会话技术Session+Cookie及区别

来源:互联网 发布:vb高级教学视频教程 编辑:程序博客网 时间:2024/05/20 22:40

①关掉浏览器,再打开保证上次的数据还在
把session id保存到cookie中(如果用户阻止使用cookie,此方法将失效)

// 访问Session, 如果没有,则创建HttpSession session = request.getSession();// 设置属性session.setAttribute("uname", "jiaozl");session.setAttribute("age", 100);// 删除属性session.removeAttribute("sex");// ------- 把session id 保存到cookie中 --------Cookie cookie = new Cookie("JSESSIONID", session.getId());cookie.setMaxAge(3600);response.addCookie(cookie);

也可以将要保存的数据对象,放入HashMap,然后将HashMap放入session中
禁用Cookie后,session也将无法使用
导致共享数据问题,URL重写
- response.encodeRedirectUrl(String); 用于对sendRedirect方法后的url地址进行重写
- response.encodeURL(String); 用于对表单action和超链接url地址进行重写

// 访问一下sessionrequest.getSession();for(Book book: mydb) {    String url = response.encodeURL("/MyCart/BuyBookCl?id="+book.getId());    out.println(book.getName() + "书<a href='"+url+"'>点击购买</a><br/>");}

区别

①存在的位置不同:
cookie存在于客户端的临时文件夹;
session存在于服务器的内存中,一个session域对象为一个用户浏览器服务。
②安全性
cookie以明文方式存放在客户端,安全性弱,可以加密后存放(md5);
session存放在服务器的内存中,安全性好。
③网络传输量
cookie会传递信息给无服务器。
session的属性值不会给客户端
④生命周期
cookie的生命周期,是累积的
session的生命周期是间隔的,发呆时间ivalidate 、 时间到
⑤访问范围
session为一个浏览器独享,会占用服务器内存,因此不要存放过多、过大的对象,会影响性能
cookie为多个用户浏览器共享

0 0