把以前做的项目改成struts2的形式后,以前的cookie不管用了,购物车只是一次会话内有效,请大家帮我看看,哪出问题了
这是查看购物车的代码,关了浏览器上次放入购物车中的物品就没了
//查看购物车
public String getCart() {
// TODO Auto-generated method stub
// TODO Auto-generated method stub
HttpServletRequest req = ServletActionContext.getRequest();
CookieCartService ck = new CookieCartService();
String name=null;
ck.getCart(name);
Map<Book,String> map = new HashMap<Book,String>();
try{
Cookie [] cookie = req.getCookies();
for(int i=0;i<cookie.length;++i){
if(!cookie[i].getName().equals("JSESSIONID")){
name = cookie[i].getName();
Book book = ck.getCart(name);
if(book!=null){
map.put(book, cookie[i].getValue());
}
}
}
HttpSession session = req.getSession();
session.setAttribute("map", map);
for(Book bk : map.keySet()) {
System.out.print("------------------"+map.get(getPrice()));
}
}catch(Exception e){
return "error";
}
return "success";
}
------解决方案--------------------
代码中,Coockie new出来之后,应该先设置最大存活时间,再添加到Response中,这样你设置的时间才有效。在添加之后设置时间没有用的,Cookie已经写于到响应中去了。