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 :

Partage d'un Vecteur entre plusieurs Servlets et JSP


Sujet :

Servlets/JSP Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2012
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 14
    Points : 9
    Points
    9
    Par défaut Partage d'un Vecteur entre plusieurs Servlets et JSP
    EDIT : Le code se trouve dans mon 2ème message

    Bonjour,

    Mon projet serait similaire à la gestion d'une bibliothèque :
    - une page pour ajouter un nouvel étudiant,
    - une autre pour un nouveau livre,
    - et une pour gérer l'emprunt de livres par les étudiants.

    Je travaille selon le patron MVC (modèle-vue-contrôleur), c'est-à-dire Java Beans, JSP, Servlet.

    Ce que j'ai déjà : le MVC pour ajouter un étudiant, et celui pour ajouter un livre.
    Et cela crée deux Vecteurs avec tous les étudiants/livres.

    J'aimerais utiliser ces 2 Vecteurs dans le MVC Emprunt (pour, entre autres, afficher les étudiants et les livres dans la vue de l'emprunt)

    Merci d'avance pour votre aide =)
    Je suis débutant en développement web. Dites-le moi si je n'ai pas été assez clair.

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Je te déconseille d'utiliser une architecture de ce genre pour la simple et bonne raison que tu vas saturer la mémoire du serveur (à priori, une bibliothèque contient énormément de références, pour les étudiants, il y en aura sans doute moins mais quand même).

    Tes 2 vues d'ajout / modification ne devraient manipuler que les enregistrements concernés (donc un étudiant ou un livre)
    Tes vues de listes devraient faire une requête, à la demande, en tenant compte de critères de sélection.
    En passant, il serait intéressant de prévoir une table des auteurs, une table des genres (entre autre) pour faciliter la recherche d'un livre.

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2012
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Je te déconseille d'utiliser une architecture de ce genre
    C'est un petit devoir où on nous a imposé le MVC, les JSP et les Servlets. Donc il n'y aura pas une liste immense de livres ou d'étudiants

    Citation Envoyé par OButterlin Voir le message
    Tes 2 vues d'ajout / modification ne devraient manipuler que les enregistrements concernés (donc un étudiant ou un livre)
    Tes vues de listes devraient faire une requête, à la demande, en tenant compte de critères de sélection.
    En passant, il serait intéressant de prévoir une table des auteurs, une table des genres (entre autre) pour faciliter la recherche d'un livre.
    Merci pour ta réponse, même si je t'avoue ne pas avoir tout compris (désolé je suis ultra-débutant )
    Alors voici une partie du code :

    Code vueEtudiant.jsp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    <%@page import="org.apache.jasper.tagplugins.jstl.core.ForEach"%>
    <%@page import="model.Etudiant"%>
    <%@page import="java.util.Vector"%>
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    	pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Etudiant jsp !</title>
    </head>
    <body>
     
    	<% Vector<Etudiant> etuVector = (Vector<Etudiant>) request.getAttribute("etudiants");   %>
     
    	<form method="get" action="EtudiantServlet">
     
    		<table>
    			<tr>
    				<td>Nom</td>
    				<td><input type="text" name="nom"></td>
    			</tr>
    			<tr>
    				<td>Prenom</td>
    				<td><input type="text" name="prenom"></td>
    			</tr>
    			<tr>
    				<td>Année</td>
    				<td><input type="text" name="annee"></td>
    			</tr>
     
    			<tr>
    				<td></td>
    				<td><input type="submit" value="Ajouter"></td>
    			</tr>
    		</table>
     
    	</form>
     
     
    	<table border="1px" align="left">
    		<tr bgcolor="yellow">
    			<th>Nom</th>
    			<th>Prenom</th>
    			<th>Année</th>
    		</tr>
     
    		<%
            
                    if(etuVector!=null)
                            for(int i=0;i<etuVector.size();i++){
                    
                                    out.print("<tr>");
                    
                                    out.print("<td>"+ etuVector.get(i).getNom() +"</td>");
                                    out.print("<td>"+ etuVector.get(i).getPrenom() +"</td>");
                                    out.print("<td>"+ etuVector.get(i).getAnnee() +"</td>");
                                    out.print("</tr>");
                    
                            }
                    %>
     
    	</table>
     
    <br><br>
    <br>
     
     
    <a href="accueil.jsp">  Accueil  </a>
     
     
    </body>
    </html>

    Code EtudiantServlet.java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    package controleur;
     
    import java.io.IOException;
     
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import model.Etudiant;
    import model.EtudiantOperationImpl;
     
     
    @WebServlet("/EtudiantServlet")
    public class EtudiantServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
     
    	private EtudiantOperationImpl model;
     
     
    	public void init(ServletConfig config) throws ServletException {
    		model=new EtudiantOperationImpl();
    	}
     
     
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
    		if(request.getParameter("nom")!=null){
    			String nom = request.getParameter("nom");
    			String prenom = request.getParameter("prenom");
    			String annee = request.getParameter("annee");
    			Etudiant etu = new Etudiant(nom, prenom, annee);
    			model.ajouterEtudiant(etu);
    		}
     
    		request.setAttribute("etudiants", model.getAllEtudiants());
    		request.getRequestDispatcher("vueEtudiant.jsp").forward(request, response);
     
     
     
    	}
     
     
     
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
     
     
    	}
     
    }
    Et les mêmes fichiers pour le MVC des Livres.
    Et ce que j'aimerais faire c'est manipuler etuVector et livreVector dans la JSP et la Servlet de l'emprunt

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    On s'est mal compris, ce n'est pas le modèle MVC que je te déconseille, il est parfait...
    C'est de stocker des grosses quantités d'informations en mémoire, sachant que les critères de filtre son propre à chaque demande...

    Bref, pour ton problème, de ce que j'en comprends en tout cas, il suffirait de stocker ton vecteur dans le scope session plutôt que request.
    En clair, plutôt que request.setAttribute(...) et request.getAttribute(...) faire session.setAttribute(...) et session.getAttribute(...)
    Et si vraiment ta liste est commune à tous les utilisateurs, tu peux même utiliser le scope application avec request.getServletContext().setAttribute(...) et request.getServletContext().getAttribute(...)

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2012
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Si j'ai bien compris :
    - dans EtudiantServlet.java, je remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("etudiants", model.getAllEtudiants());
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    HttpSession session = request.getSession();
    session.setAttribute("etudiants", model.getAllEtudiants());
    - dans vueEtudiant.jsp, je remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <% Vector<Etudiant> etuVector = (Vector<Etudiant>) request.getAttribute("etudiants"); %>
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <% HttpSession session = request.getSession();
    Vector<Etudiant> etuVector = (Vector<Etudiant>) session.getAttribute("etudiants"); %>

    J'ai quelques autres questions pour être sûr d'avoir bien compris :

    1) Est-ce que je peux écrire ce qui suit dans vueEmprunt.jsp ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <% HttpSession session = request.getSession();
    Vector<Etudiant> etuVector = (Vector<Etudiant>) session.getAttribute("etudiants"); %>
    Si oui, est-ce que l'importation seulement de la classe Etudiant suffit ou il en faut une autre ?

    2) Est-ce que je peux écrire ce qui suit dans EmpruntServlet.java ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    HttpSession session = request.getSession();
    Vector<Etudiant> etuVector = (Vector<Etudiant>) session.getAttribute("etudiants");
    Si oui, faut-il importer quoique ce soit de spécial ?

    3) dans EtudiantServlet.java, est-ce qu'on doit rajouter une ligne de getRequestDispatcher pour rediriger aussi vers vueEmprunt.jsp ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getRequestDispatcher("vueEmprunt.jsp").forward(request, response);
    (je dis ça par instinct seulement)

    PS : Je suis désolé de te demander autant d'aide, je suis vraiment un débutant.
    J'ai reçu trop peu de cours, presque tout ce que j'ai appris c'était en tâtonnant.
    Mais là ça fait presque 3 jours que je coince sur ce problème (qui bloque tout mon projet) sans obtenir aucun résultat.
    Si c'est plus simple pour toi, est-ce que tu pourrais juste me dire ce que je devrais modifier dans les 2 fichiers ci-dessus, et ce que je devrais écrire dans vueEmprunt.jsp et dans EmpruntServlet.java ?
    (bien sûr juste la partie pour récupérer le vecteur)
    (tu peux te baser sur la syntaxe des 2 autres fichiers)

    Encore une fois merci, ça me sortirait d'une galère énorme =)

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fizzpass Voir le message
    - dans EtudiantServlet.java, je remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("etudiants", model.getAllEtudiants());
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    HttpSession session = request.getSession();
    session.setAttribute("etudiants", model.getAllEtudiants());
    - dans vueEtudiant.jsp, je remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <% Vector<Etudiant> etuVector = (Vector<Etudiant>) request.getAttribute("etudiants"); %>
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <% HttpSession session = request.getSession();
    Vector<Etudiant> etuVector = (Vector<Etudiant>) session.getAttribute("etudiants"); %>
    Oui
    Citation Envoyé par fizzpass Voir le message
    1) Est-ce que je peux écrire ce qui suit dans vueEmprunt.jsp ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <% HttpSession session = request.getSession();
    Vector<Etudiant> etuVector = (Vector<Etudiant>) session.getAttribute("etudiants"); %>
    Si oui, est-ce que l'importation seulement de la classe Etudiant suffit ou il en faut une autre ?
    Tu peux te passer de la ligne HttpSession session = request.getSession(); parce qu'il existe un attribut "session" pour les jsp
    Citation Envoyé par fizzpass Voir le message
    2) Est-ce que je peux écrire ce qui suit dans EmpruntServlet.java ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    HttpSession session = request.getSession();
    Vector<Etudiant> etuVector = (Vector<Etudiant>) session.getAttribute("etudiants");
    Si oui, faut-il importer quoique ce soit de spécial ?
    Idem
    Citation Envoyé par fizzpass Voir le message
    3) dans EtudiantServlet.java, est-ce qu'on doit rajouter une ligne de getRequestDispatcher pour rediriger aussi vers vueEmprunt.jsp ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getRequestDispatcher("vueEmprunt.jsp").forward(request, response);
    (je dis ça par instinct seulement)
    Oui, tu peux, mais il faudrait (à priori) le faire sous condition puisque la vue peut sortir sur 2 pages

  7. #7
    Futur Membre du Club
    Inscrit en
    Novembre 2012
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Merci mon sauveur =D

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/11/2016, 17h51
  2. partage d'une variable entre plusieurs threads
    Par baedal dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 27/02/2008, 20h33
  3. Réponses: 5
    Dernier message: 03/12/2007, 11h21
  4. Réponses: 5
    Dernier message: 25/04/2006, 14h13
  5. Partager du code Javascript entre plusieurs pages HTML
    Par oceane751 dans le forum Général JavaScript
    Réponses: 29
    Dernier message: 10/01/2006, 15h20

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