你好,我在春季休假时遇到问题,我每次在会议中都为null,这是我的课程
@GetMapping("/shoppingCart/addProduct/{productId}")
public ResponseEntity<Cart> addProductToCart(@PathVariable("productId") Long productId,HttpServletRequest request) throws AppException {
Product product = productService.getProduct(productId);
Cart cart= (Cart) request.getSession().getAttribute("myCart");
// If null, create it.
if (cart == null) {
cart = new Cart();
request.getSession().setAttribute("myCart", cart);
}
cart.addProduct(product, 1);
return new ResponseEntity<>(cart,HttpStatus.CREATED);
}
@GetMapping("/shoppingCart")
public ResponseEntity<Cart> shoppingCart(HttpServletRequest request) {
cart = (Cart) request.getSession().getAttribute("myCart");
return new ResponseEntity<>(cart,HttpStatus.CREATED);
}
此行request.getSession().getAttribute("myCart")
返回null
,并且当我在购物车中添加产品时,它第一次保存在会话中,此后,当我尝试添加其他产品时,我的会话为空。
谢谢
RestFul服务在本质上被设计为无状态的,因此,您首先不应该在Rest API中使用会话。但是,如果按照某种业务逻辑需要使用会话,则应该使用Spring MVC而不是REST,即,应该在类中使用@Controller
批注,而不是@RestController
。