IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

[Servlet + Class] question concernant plusieurs connections


Sujet :

Servlets/JSP Java

  1. #1
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut [Servlet + Class] question concernant plusieurs connections
    Hello tout le monde, z'allez bien ?

    Petit question qui me trotte dans la tête.

    J'ai une page HTML avec un formulaire pour mettre son login et son mot de passe.
    Ensuite tout se passe bien, la requete se fait au servlet qui va verifier dans la BDD si le login et mdp existe.

    Par la même occasion, je stock le login et le mdp dans une class UserID :
    User UserID = new User();
    UserID.setName((String) request.getParameter("Name"));
    UserID.setPassword((String) request.getParameter("Password"));
    Imaginons ce cas de figure :

    3 Personnes, qu'on va appeler : Pim Pam Poum, se log en même temps, que va t'il se passer dans la Classe UserID ????
    La variable 'name' aura quoi comme valeur ? Pim Pam ou Poum ?
    si jamais c'est Poum qui l'emporte, et que Pim va sur une page qui reprend la valeur name du genre : Welcome 'name', il y aura ecrit : Welcome Poum (au lieu de Pim)... ??

    Imaginez-vous le bordel si jamais c'est 3000 personnes en même temps qui se log !

    En gros j'aimerais savoir si ce cas de figure est possible et que faire pour contrer ca... bien sur je ne vous demande pas de me faire tout le code etc..., au moins me dire dans quoi chercher et si ce que j'ai dit plus haut est possible.

    voila voila
    Merci d'avance !

    ++
    ShinJava

    -----------------------------

    Petit débutant deviendra grand..... débutant

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 54
    Points : 58
    Points
    58
    Par défaut
    Je sais pas comment est écrit ton code java mais a priori : ton code sera executé 3 fois sans probleme d'écrasement de variables.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 45
    Points : 37
    Points
    37
    Par défaut
    A mon avis, a chaque fois qu'un utilisateur va se connecter, un nouvel objet va etre recréé, donc si Pam se connecte ce sera Pam, ensuite tu stocke le nom dans la session et tu l'afficheras, le nom sera stocké sur la session de la personne , donc elle sera bien différente de Pam et de Poum
    J'espere ne pas me tromper

  4. #4
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Je vous remerci pour vos réponses.

    Despogres : pour 3 personnes j'imagine aussi qu'il n'y aura pas de problème mais pour 10000 ?
    romain3395 : donc y'aurait bien une histoire de session, c'est une chose que je n'ai pas encore regarder.


    il est vrai que ma question n'est pas tres clair non plus car je suis encore un débutant et je n'ai pas les termes techniques appropriés...

    Je vais vous donner un exemple avec du code tout simple.
    alors il y a la page d'accueil avec un formulaire tout bête.

    Un servlet qui va recuperer login et mot de passe, qui va les mettre dans la classe User_ID et qui va faire une requete vers une BDD.


    public class Servlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

    String name = request.getParameter("Name");
    String Password = request.getParameter("Password");

    User UserID = new User();
    UserID.setName((String) request.getParameter("Name"));
    UserID.setPassword((String) request.getParameter("Password"));

    //ici il y a tout ce qui concerne jdbc et SQL
    Connection connection;
    Statement stmt;
    etc...

    La requete est la suivante
    "Select * FROM User_Table WHERE Login = 'name'"

    si le resultset trouve quelque chose alors il vous envoi vers une page JSP ou il y a ecrit hello 'name' !
    request.getRequestDispatcher("Hello.jsp").forward(request, response);
    User Class (tout bête aussi) :

    public User()
    {
    }
    public void setName(String Name)
    {
    this.Name = Name;
    }

    public String getName()
    {
    return Name;
    }
    Donc vous voyez c'est tout bête.
    Si jamais 10000 personnes se log en même temps pile poil à la même seconde que va t'il se passer pour la class user ? y'a t'il un risque d'ecrasement de String Name ou bien chaque personne aura sa propre session ?

    Je vous remercie d'avance

    ++
    ShinJava

    -----------------------------

    Petit débutant deviendra grand..... débutant

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 45
    Points : 37
    Points
    37
    Par défaut
    Si il y a 1000 persones, ton serveur risque d'exploser, utilise un EJB Session dans ce cas qui gerera correctement la montée en charge.
    Mais a priori, fais un test, lance 2 browsers sur ta servlet et tu verras normalement 2 noms différents...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 54
    Points : 58
    Points
    58
    Par défaut
    Un thread est créé à chaque appel a ta servlet, donc comme pour 3 user, si tu en 10 000 c'est pareil : ca marche !

    Allez un peu de lecture :
    http://darktigrou.free.fr/Servlets-b...er/node38.html

  7. #7
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    okey, merci pour vos réponses, ca me rassure

    romain3395 : merci, j'irais jeter un coup d'oeil sur les EJB , car j'avais pas penser à la surcharge du serveur

    desproges : merci pour les précisions et les liens, jvais pouvoir mieux comprendre comment ca se passe.


    Merci à vous !

    ++
    ShinJava

    -----------------------------

    Petit débutant deviendra grand..... débutant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/04/2009, 23h20
  2. P'tite question concernant les Class ou Module
    Par arnofly dans le forum VB.NET
    Réponses: 15
    Dernier message: 18/04/2009, 17h01
  3. question concernant la visibilité de classes
    Par thebloodyman dans le forum Langage
    Réponses: 5
    Dernier message: 11/09/2006, 09h21
  4. Réponses: 9
    Dernier message: 26/06/2006, 10h58
  5. Réponses: 7
    Dernier message: 10/09/2004, 14h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo