您的位置:首页 > 编程语言 > Java开发

【JavaWeb】cookie与session

2012-11-01 09:30 387 查看
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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: