Сеансы в JSP

#c# #java #asp.net #jsp #servlets

#c# #java #asp.net #jsp #сервлеты

Вопрос:

Я хотел бы знать соответствующий Java-код для следующего ASP.net код. Я создал session….in этот код я хотел бы также использовать в своих сервлетах.

         public static ShoppingCart Current
    {
        get
        {
            var cart = HttpContext.Current.Session["Cart"] as ShoppingCart;
            if (null == cart)
            {
                cart = new ShoppingCart();
                cart.Items = new List<CartItem>();

                if (mySession.Current._isCustomer==true)
                cart.Items = ShoppingCart.loadCart(mySession.Current._loginId);

                HttpContext.Current.Session["Cart"] = cart;
            }
            return cart;
        }
    }
  

Ответ №1:

Использовать HttpSession#setAttribute() и #getAttribute() .

 HttpSession session = request.getSession();
ShoppingCart cart = (ShoppingCart) session.getAttribute("cart");

if (cart == null) {
    cart = new ShoppingCart();
    session.setAttribute("cart", cart);
}

// ...
  

Он также доступен в JSP EL by ${cart} .


Обновление согласно вашему комментарию, вы действительно можете преобразовать его во вспомогательный метод в ShoppingCart классе:

 public static ShoppingCart getInstance(HttpSession session) {
    ShoppingCart cart = (ShoppingCart) session.getAttribute("cart");

    if (cart == null) {
        cart = new ShoppingCart();
        session.setAttribute("cart", cart);
    }

    return cart;
}
  

а затем используйте его следующим образом

 ShoppingCart cart = ShoppingCart.getInstance(request.getSession());
// ...
  

Комментарии:

1. Поскольку у меня будет много страниц … я хочу, чтобы сеанс был создан на любом page…so должен ли я копировать этот код в каждый сервлет?

2. Смотрите обновление ответа. Однако вы также можете использовать вместо этого фреймворк MVC.