浏览器禁用Cookie后的Session处理
1. 实现购物车, 可以基于Cookie, 也可以基于Session, 若服务器性能较差, 可以考虑基于Cookie实现购物车
2. 解决方案: URL重写
把用户可能点的每一个超链接后面,都跟上用户的sessionid号
1) 对sendRedirect方法后的URL地址进行重写
response.encodeRedircetURL(url);
2) 对表单或超链接的URL地址进行重写
response.encodeURL(url);
3. 案例
1) 重写超链接的URL地址
1 out.write("本网站有如下书:<br/>"); 2 Set<Map.Entry<String,Book>> set = DB.getAll().entrySet(); 3 for(Map.Entry<String,Book> me : set){ 4 Book book = me.getValue(); 5 String url = "/day07/servlet/BuyServlet?id=" + book.getId(); 6 url = response.encodeURL(url); 7 out.println(book.getName() + " <a href='"+url+"'>购买</a><br/>"); 8 }
2) 重写sendRedirect方法的URL地址
1 HttpSession session = request.getSession(); 2 String url = response.encodeRedirectURL("/day07/servlet/ListCartServlet"); 3 response.sendRedirect(url);