cookie和session的结合实现多浏览器共享session

在会话过程中,保存会话数据有两种方式:session和cookie,这两种方式存在的场合不一样。

session主要保存在服务器端,从会话建立直到消亡,而cookie存在于客户端浏览器,当然也可通过服务器的某些方法获得。

 这样在解决共享session时,对于session与浏览器的对应存在着一对多的联系,此时我们需要了解到对于动态网站这样的开发,通常服务器会把session的唯一标识通过cookie的 形式写回到浏览器在用户第一次建立连接时,如果浏览器禁用cookie就在url地址后面加上session标识。

因而,问题就变成如何将sessionid写回到多个浏览器或多个连接地址后面。

此类方式对解决实现记录用户操作非常有用。

下面是购买过程的servlet实现:

//1.得到用户想买的书
  String id = request.getParameter("id");
  Book book = (Book) DB.getMap().get(id);
  
  //2.把用户购买的书加在session中用于管理所有书的集合了
  HttpSession session = request.getSession();
  Cookie cookie = new Cookie("JSESSIONID",session.getId());
  cookie.setMaxAge(30*60);
  cookie.setPath("/day06");
  response.addCookie(cookie);
  List<Book> list = (List<Book>) session.getAttribute("list");
  if(list==null){
   list = new ArrayList<Book>();
   session.setAttribute("list", list);
  }
  list.add(book);
  
  //3.跳转到购物车显示列表
  String url = response.encodeRedirectUrl("/day06/servlet/ListCartServlet");
  //request.getRequestDispatcher("/servlet/ListCartServlet").forward(request, response);
  //response.sendRedirect("/day06/servlet/ListCartServlet");没禁用cookie时采用的方法
  response.sendRedirect(url);

 

这样不管用户是否禁用cookie都可以实现共享session

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值