【问题标题】:Session in Spring Rest春季休息会议
【发布时间】:2020-02-06 10:08:49
【问题描述】:

你好,我在春季休息时遇到了问题,我的会话中每次都为空,这是我的课

        @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,当我在购物车中添加产品时,它第一次保存在会话中,之后当我尝试添加另一个产品时,我的会话为空。

谢谢

【问题讨论】:

    标签: spring-boot servlets spring-rest


    【解决方案1】:

    RestFul 服务本质上是设计为无状态的,因此您首先不应该在 Rest API 中使用会话。但是,如果您需要根据业务逻辑使用会话,那么您应该使用 Spring MVC 而不是 REST,即您应该在类中使用 @Controller 注释而不是 @RestController

    【讨论】:

    • 谢谢 Dhananjay Gupta,但我用 spring 创建了一个商店并做出反应,我想将我的购物车保存在 session 而不是 session chrome。这就是原因
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2015-03-15
    • 1970-01-01
    • 2018-11-30
    • 2016-01-30
    • 2013-12-13
    相关资源
    最近更新 更多