【JavaWeb】cookie与session

cookie是客户端保存数据

session 是服务器端保存数据

session 其实是基于cookie的 第一次访问服务器,服务器后台会记录一个id号,把信息放到一个
名为JESSIONID的cookie中回传给浏览器,下次在访问的时候会带着该cookie访问服务器


用户购买书籍:    
Session  session = request.getSession();

//这样即使关闭浏览器,在重新打开,原来购买的数据还会显示。
Cookie cookie = new Cookie("JSESSIONID",session.getId());
cookie.setMaxAge(30*60);//三十分钟
cookie.setPath("/test");//当访问整个web应用的时候都带上cookie
response.addCookie(cookie);

List list = (List)session.getAttribute("case");


if (list == null){
list = new ArrayList();
session.setAttribute("case",list);
}


list.add(Book);
respinse.sendRedirect(......);//重定向
==============================================================================

显示用户购物车:
//这里如果你禁用Cookie.则request.getSession就是一个全新的session这时在调用getAttribute
//方法就会报异常,因为此时获取不到JESSIONID中的数据。此时就应该用URL重写。
//URL地址重写就会附带JESSIONid号传过去。
List<Book> list = request.getSession().getAttribute("case");
for(Book book : list){
response.getWriter.out(book.getName);
}


 

//URL重写需要注意:

1:要把网站涉及到的所有的url地址都要重写,这样就不会买一样丢一样了。

2:在重写URL的时候看是否创建了session,只有在上面request.getSession();创建session,才会在url重写的时候附带jessionid.
   request.getSession();
   String url = "/test/servlet/BuyServlet?id=" + book.getId();
   url = response.encodeURL(url);//只有在上面request.getSession();创建session,才会在url重写的时候附带jessionid.
   out.write(book.getName() + "<a href='"+url+"' target='_blank'>购买</a><br/>");

3:禁用cookie之后,关闭浏览器,在重新打开,用URL重写这种方案是不会看到原来购买的商品的。 

4:细节:response.encodeURL(url);重写的这个方法,如果禁用cookie该方法会重写URL,如果没有禁用cookie则不会重写URL。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值