Java会话

Java会话,java,jsp,session,servlets,shopping-cart,Java,Jsp,Session,Servlets,Shopping Cart,我有一个ShoppingCart类,它包含CartItems(在ArrayList中)。我想要的是,每当会话存在时(当用户向购物车添加了项目时),它都应该请求上一个会话,并将其显示在ViewCart jsp页面上 我现有的代码给我带来了很多麻烦,所以我想知道应该如何做。作为一名c#编码器,我认为我在java中的逻辑是错误的。这是我的密码 公共类购物车 { #区域列表车 公共列表项{get;private set;} #端区 #区域会议 公共静态只读ShoppingCart实例; 静态Shoppi

我有一个ShoppingCart类,它包含CartItems(在ArrayList中)。我想要的是,每当会话存在时(当用户向购物车添加了项目时),它都应该请求上一个会话,并将其显示在ViewCart jsp页面上

我现有的代码给我带来了很多麻烦,所以我想知道应该如何做。作为一名c#编码器,我认为我在java中的逻辑是错误的。这是我的密码

公共类购物车
{
#区域列表车
公共列表项{get;private set;}
#端区
#区域会议
公共静态只读ShoppingCart实例;
静态ShoppingCart()
{
if(HttpContext.Current.Session[“ASPNETShoppingCart”]==null)
{
实例=新ShoppingCart();
Instance.Items=newlist();
HttpContext.Current.Session[“ASPNETShoppingCart”]=实例;
}
其他的
{
Instance=(ShoppingCart)HttpContext.Current.Session[“ASPNETShoppingCart”];
}
}}

由于我不是java或jsp方面的专家,我很难弄明白这一点。我该怎么办?

只需将其存储为会话的一个属性,并检查每个请求是否存在

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

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

cart.add(item);
// ...

你通常在课堂上这样做。应仅用于演示。

只需将其存储为会话的属性,并检查每个请求是否存在

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

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

cart.add(item);
// ...

你通常在课堂上这样做。应该只用于演示。

在更新CART中的项目时,我也会考虑在会话或CART本身上进行同步。@ HoNKNC:这是完全不必要的,因为会话不是在多个用户之间共享的。用户可能一次做出多个可能影响会话本身的请求。@ HoNKC:这将是一个机器人或是设计不佳的商业代码。在更新CART中的项目时,我也会考虑在会话或CART本身上进行同步。@ HoNKNC:这是完全不必要的,因为会话不是在多个共享之间共享的。用户。但是,一个用户可能一次发出多个请求,这可能会影响会话本身。@hooknc:这可能是一个机器人,也可能是设计糟糕的业务代码。