浏览器禁用Cookie后的Session处理

时间:2024-09-02 10:04:56

1. 实现购物车, 可以基于Cookie, 也可以基于Session, 若服务器性能较差, 可以考虑基于Cookie实现购物车

2. 解决方案: URL重写

把用户可能点的每一个超链接后面,都跟上用户的sessionid号

1) 对sendRedirect方法后的URL地址进行重写

response.encodeRedircetURL(url);

2) 对表单或超链接的URL地址进行重写

response.encodeURL(url);

3. 案例

1) 重写超链接的URL地址

 out.write("本网站有如下书:<br/>");
Set<Map.Entry<String,Book>> set = DB.getAll().entrySet();
for(Map.Entry<String,Book> me : set){
Book book = me.getValue();
String url = "/day07/servlet/BuyServlet?id=" + book.getId();
url = response.encodeURL(url);
out.println(book.getName() + " <a href='"+url+"'>购买</a><br/>");
}

2) 重写sendRedirect方法的URL地址

 HttpSession session = request.getSession();
String url = response.encodeRedirectURL("/day07/servlet/ListCartServlet");
response.sendRedirect(url);