2011-03-26 3 views
0

Dans ASP.net, j'ai le code suivant. Je fais un site web dans JSP et utilise des classes Java. Fondamentalement, je veux intégrer la même fonctionnalité de ce constructeur.Objet C# to Java de Http Session

Qu'est-ce que le code Java pour le code C# suivant?

public class ShoppingCart 
{ 
    #region ListCart 

    public List<CartItem> Items { get; private set; } 

    #endregion 

    #region CartSession 


    public static readonly ShoppingCart Instance; 

    static ShoppingCart() 
    { 

     if (HttpContext.Current.Session["ASPNETShoppingCart"] == null) 
     { 
      Instance = new ShoppingCart(); 
      Instance.Items = new List<CartItem>(); 
      HttpContext.Current.Session["ASPNETShoppingCart"] = Instance; 
     } 
     else 
     { 
      Instance = (ShoppingCart)HttpContext.Current.Session["ASPNETShoppingCart"]; 
     } 
    } 
} 
+0

Je ne pense pas qu'il y ait un équivalent exact en Java. Je garderais normalement une référence au ShoppingCart dans la session elle-même. Vous devriez normalement accéder à la session en utilisant HttpServletRequest.getSession(). hth – laher

+0

je voudrais savoir comment savoir si une session actuelle existe, si elle ne crée pas une autre, utilisez celle du broweser – user478636

Répondre

1

En Java, vous devrez jouer avec HttpServletRequest ou HttpSession (qui est le plus préféré) puisque vous stocker une ShoppingCart dans une session.

Je ne créerais pas de classe ShoppingCart pour stocker une instance dans une session, car ShoppingCart peut exister en dehors du contexte Web. Un moyen simple de faire ce que vous avez demandé est de créer une classe utilitaire pour stocker/récupérer un panier dans/depuis la session.

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpSession; 

public class ShoppingCartUtil { 

    public static ShoppingCart getShoppingCart(HttpServletRequest request, String sessionName) { 
     return getShoppingCart(request.getSession(), sessionName); 
    } 

    public static ShoppingCart getShoppingCart(HttpSession session, String sessionName) { 
     return (ShoppingCart)session.getAttribute(sessionName); 
    } 

    public static void addShoppingCartToSession(HttpServletRequest request, String sessionName, ShoppingCart cart) { 
     addShoppingCartToSession(request.getSession(), sessionName, cart); 
    } 

    public static void addShoppingCartToSession(HttpSession session, String sessionName, ShoppingCart cart) { 
     session.removeAttribute(sessionName); 
     session.setAttribute(sessionName, cart); 
    } 
} 
+0

juste une question ... comment puis-je enregistrer une liste de tableau à une session – user478636

+0

et une autre chose , je vais effectuer des opérations telles que AddItem et SetQuantity, devrais-je le faire dans cette classe ou créer une classe séparée pour cela. maintenant, je suis un peu confus, parce que dans ASP.net, j'utilisais la Session et les méthodes addItem et Setquantity tous dans une classe – user478636

+1

@ user478636, pour votre première question, de la même façon que vous enregistrez un panier à un session, c'est la même manière que vous enregistrez une liste de tableaux –