#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.