Panier avec session

a_developper Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   -  
a_developper Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   -
bonjour ,

un client sans faire l'authentification peux remplir le panier (table dans base de données) , j'ai une méthode qui vide le panier mais je sais pas comment je vais l'appelé quand session se ferme , svp vos aides

3 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    Pourquoi enregistrer le panier en base de données ?

    Si le but de ton panier est d'être supprimé à la fin de la session, tu devrais le stocker dans la session, quand elle sera supprimée toutes ses données seront supprimées avec elle, notamment le panier.

    Au delà de ça, pour répondre techniquement à ta question, tu peux utiliser HttpSessionBindingListener pour être notifié d'un événement dans la session, comme l'ajout/suppression de valeurs dans la session (sachant que toutes les valeurs sont supprimées à la destruction de la session).
    0
    1. a_developper Messages postés 39 Date d'inscription   Statut Membre Dernière intervention  
       
      je vais essayer
      0
    2. a_developper Messages postés 39 Date d'inscription   Statut Membre Dernière intervention  
       
      tu peux me donner une idée comment va être le code car j'ai essayé mais pas de résultat !!! :(
      0
    3. KX Messages postés 19031 Statut Modérateur 3 020
       
      Il faut que tu ajoutes une entrée dans ta session (peu importe le nom) dont la valeur est un HttpSessionBindingListener
      0
    4. a_developper Messages postés 39 Date d'inscription   Statut Membre Dernière intervention  
       
      d'accord merci beaucoup
      0
  2. a_developper Messages postés 39 Date d'inscription   Statut Membre Dernière intervention  
     
    j'ai essayé mais pas de résultat :'(
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      Voici un exemple que je viens de tester, cela illustre exactement ce que j'ai pu dire ci-dessus, à savoir l'ajout d'un attribut d'un objet HttpSessionBindingListener qui sera appelé à sa création et sa suppression.

      Pour l'exemple j'ai configuré la durée de la session à 30 secondes, lors de l'appel de la servlet on voit donc le message de création de session puis 30 secondes plus tard le message de suppression.
      mai 15, 2017 4:51:11 PM ccm.kx.TestServlet$1 valueBound
      INFOS: Création de la session z2ljj7v394qk12r0n1o9eq264
      mai 15, 2017 4:51:41 PM ccm.kx.TestServlet$1 valueUnbound
      INFOS: Suppression de la session z2ljj7v394qk12r0n1o9eq264

      package ccm.kx;
      
      import java.util.logging.*;
      import javax.servlet.http.*;
      
      public class TestServlet extends HttpServlet {
          private static final long serialVersionUID = 1;
      
          @Override
          protected void doGet(HttpServletRequest request, HttpServletResponse response) {
              HttpSession session = request.getSession();
              session.setMaxInactiveInterval(30); // 30 secondes
              session.setAttribute("_binding_listener", new HttpSessionBindingListener() {
                  @Override
                  public void valueBound(HttpSessionBindingEvent event) {
                      Logger.getGlobal().log(Level.INFO, "Création de la session " + event.getSession().getId());
                  }
      
                  @Override
                  public void valueUnbound(HttpSessionBindingEvent event) {
                      Logger.getGlobal().log(Level.INFO, "Suppression de la session " + event.getSession().getId());
                  }
              });
          }
      }
      0
  3. a_developper Messages postés 39 Date d'inscription   Statut Membre Dernière intervention  
     
    ok je vais essayer tout de suite
    0