我的项目很简单,我正在为商店添加购物车服务。算法看起来像这样: 1)创建产品的ArrayList 2)将该列表添加到HttpSession作为属性 3)下一次算法询问是httpSession artributes中的购物车。
@Controller
public class CartController {
@Autowired
ShopServiceInterface shopServiceInterface;
@RequestMapping(value = "/cart/add/{id}", method = RequestMethod.GET)
public String addToCart(@PathVariable("id") Long id , ModelMap modelMap, HttpSession httpSession){
if(httpSession.getAttribute("cart") == null) {
List<CartItem> cart = new ArrayList<CartItem>();
cart.add(new CartItem(shopServiceInterface.getProductById(id), 1));
httpSession.setAttribute("cart", cart);
} else {
List<CartItem> cart = (List<CartItem>)httpSession.getAttribute("cart");
cart.add(new CartItem(shopServiceInterface.getProductById(id),1));
httpSession.setAttribute("cart", cart);
}
return "cart";
}
}
问题是,当我尝试将新产品添加到购物车时,它始终会生成新的HttpSession
,并且始终会创建新的ArrayList
购物车。我在调试时看到springMVC每次都给我一个httpSession
个对象。