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 :

Où dois-je déclarer mon "Model" ?


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2004
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 303
    Par défaut Où dois-je déclarer mon "Model" ?
    Bonjour tout le monde,

    J'ai réalisé une petit application web pour comprendre le principe du MVC.
    En fait, j'ai le code suivant dans mon fichier (vue.jsp)

    Code : 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
    <%
    String L=(String) request.getAttribute("login");
    String P=(String) request.getAttribute("pass");
    %>
    <!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>Insert title here</title>
    </head>
    <body>
    <%-- 	Forward --%>
    	<h3>Votre Login est: <% out.println(L); %>	</h3>
    	<h3>Votre Pass est: <%=P %></h3>
    </body>
    </html>
    Ok ça fonctionne mais ce n'est pas propre !
    Mon code Java ne doit pat être déclaré dans ce fichier (Vue.jsp) afin de respecter le modèle MVC.
    Où dois-je mettre mon code java pour respecter le modèle MVC ?

    M= ?
    V= Vues.jsp
    C= MonServlet.java

    Merci d'avance,

    Yves

    PS: Pour information, ce petit projet/tuto est réalisé sous Eclipse Kelper J2EE (Dynamic Web Project).

  2. #2
    Membre émérite
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Par défaut
    Pour le model, la base c'est un simple POJO avec, dans ton cas deux propriétés de type string. Après, un modele est normalement persisté en base. Ça nécessite donc une deuxième classe (à minima) qui s'occupe de connecter ton appli à une base de donner et d'y persister ton POJO.

    Mais fait un tour dans les tutos, il y en a pas mal sur le sujet...

  3. #3
    Membre éclairé
    Inscrit en
    Février 2004
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 303
    Par défaut
    Bonjour,

    Merci pour ta réponse, j'ai regardé le POJO à première vue, c'est une classe toute simple.
    Hélas, je n'arrive pas à l'implémenter dans ce petit tutorial.

    Pouvez-vous m'aider, le code est ci-dessous ?

    D'avance, tout grand MERCI,

    Yves


    FirstServlet.java:

    Code : 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
    package web;
     
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    public class FirstServlet extends HttpServlet{
    /**
    	 * 
    	 */
    	private static final long serialVersionUID = 1L;
     
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    		throws ServletException, IOException {
        	String l=request.getParameter("login");
        	String p =request.getParameter("pass");
        	request.setAttribute("login", l);
        	request.setAttribute("pass", p);
        	// Forward
        	 request.getRequestDispatcher("Vue.jsp").forward(request, response);
        	}
     
    @Override
    	protected void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    	doGet(request, response);
    	}
     
    }
    Web.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
      <servlet>
        <servlet-name>cs</servlet-name>
        <servlet-class>web.FirstServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>cs</servlet-name>
        <url-pattern>*.php</url-pattern>
      </servlet-mapping>
    </web-app>
    login.html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <form action="control.php" method="post" >
     Login:<input type="text" name="login"><br/>
     Pass:<input type="password" name="pass"><br/>
     <input type="submit" value="OK">
     </form>
    </body>
    </html>
    Vue.jsp:
    Code : 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
    <%
    String L=(String) request.getAttribute("login");
    String P=(String) request.getAttribute("pass");
    %>
    <!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>Insert title here</title>
    </head>
    <body>
    <%-- 	Forward --%>
    	<h3>Votre Login est: <% out.println(L); %>	</h3>
    	<h3>Votre Pass est: <%=P %></h3>
    </body>
    </html>

  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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Cafeinoman Voir le message
    Pour le model, la base c'est un simple POJO avec, dans ton cas deux propriétés de type string. Après, un modele est normalement persisté en base. Ça nécessite donc une deuxième classe (à minima) qui s'occupe de connecter ton appli à une base de donner et d'y persister ton POJO.
    Euh, pas vraiment... Le "Model" au sens MVC n'est rien d'autre qu'un bean représentant les données de la "Vue" (la JSP ici).
    La persistence n'a rien à voir avec MVC, c'est juste un découpage logique en fonction des responsabilités de chaque élément pour la gestion d'une page "web".
    En d'autres termes :
    - M représente les données utilisées par la page (simple Bean Java) et placé dans le scope voulu (request, session, application)
    - V représente la page JSP qui utilise et/ou affiche ces données (JSP le plus souvent, xhtml pour JSF2)
    - C représente le contrôleur qui répond à une invocation de la page ou autre (une servlet ou assimilée en fonction du framework utilisé)

    Ensuite, pour une application type CRUD, effectivement il faudra voir l'aspect extraction/sauvegarde de la base de données. Généralement, on place ces actions dans une couche dédiée à base d'EJB ou de classes gérées par un framework comme Spring.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éclairé
    Inscrit en
    Février 2004
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 303
    Par défaut
    Bonjour,

    Merci pour la réponse, est-ce que mon "model" est-il correct car j'ai l'impression que je ne devrais pas y avoir du code java dans ma page JSP ?

    Merci d'avance,

    Yves

  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
    Billets dans le blog
    1
    Par défaut
    Dans ton exemple, ton modèle devrait être comme ceci
    Code : 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
     
    package mon.package;
     
    public class LoginBean
    {
        private String user;
        private String password;
     
        public Modele()
        {
            super();
        }
     
        public String getUser()
        {
            return user;
        }
     
        public void setUser(String user)
        {
            this.user = user;
        }
     
        public String getPassword()
        {
            return password;
        }
     
        public void setPassword(String password)
        {
            this.password = password;
        }
    }
    Dans ta page JSP, tu devrais le référencer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <jsp:useBean id="loginBean" scope="request" class="mon.package.LoginBean"/>
    et l'utiliser par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <jsp:getProperty name="loginBean" property="user"/>
     
    ou
     
    <%=loginBean.getUser()%>
    (bon, je suis un peu rouillé avec ces anciennes méthodes)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre éclairé
    Inscrit en
    Février 2004
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 303
    Par défaut
    Merci bcp pour les explications, je comprends bcp mieux.
    Mais, pour le résultat, je reçois des valeurs "NULL" pour mon login et password.
    Il manque surement quelque chose, sûrement dans le fichier "FirstServlet.java" ?!

    Pourtant, j'ai essayé les deux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <jsp:getProperty name="loginBean" property="user"/>
    ou
    <%=loginBean.getUser()%>
    dans mon fichier Vue.jsp


    Au fait, j'ai remplacé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public Modele()
        {
            super();
        }
     
    PAR 
     
    public LoginBean()
        {
            super();
        }


    Merci

    Yves

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

Discussions similaires

  1. [maven2] Où dois-je déclarer mon main-class
    Par Lynk HIROSUE dans le forum Maven
    Réponses: 3
    Dernier message: 12/04/2010, 12h03

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