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

Développement Web en Java Discussion :

Architecture développement web.. Model 1? Model2? Framework?


Sujet :

Développement Web en Java

  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 18
    Par défaut Architecture développement web.. Model 1? Model2? Framework?
    Bonjour,

    Cela fait plusieurs jours que j’essaye de trouver une architecture web correcte pour développer un site web avec JSP/Servlets/Tomcat.. Et je commence à avoir fait un peu le tour mais je n’ai toujours pas répondu à toutes mes questions.

    J’ai lu que les architectures «Model 1 architectures» étaient mauvaises à utiliser quand le projet est grand. Je pensais justement utiliser cette approche, le site comporte beaucoup de formulaires et pas mal de pages (50 écran environ).
    J’ai fait des tests avec le «Model 2 architectures» et je trouve çà un peu compliqué et dans les fichiers jsp j’ai quand même pas mal de tag jsp <% %>

    L’application que je doit développer doit pouvoir évoluer mais seule une personne la fera évoluer (donc avec toutes les compétences métier design/prog)

    Mes questions sont les suivantes :
    - Le «Model 1 architectures» est-il dépassé et à proscrire même pour les projets de taille moyenne développé par une seule personne ?
    - Dans mes tests avec le «Model 2 architectures» je n’ai pas utilisé les javabeans, est ce que je peut utiliser des objets générés par mon servlet directement ou je «casse» le mvc ? (En fait, je récupère un objet qui contient le résultat d’un « SELECT * » d’une BDD donc je vois pas comment le faire avec des javabeans)
    - Les frameworks comme struts peuvent t’il correspondre à l’architecture que je cherche ?
    - Avec les framework est ce que l’on écrit du HTML ou seulement des tag jsp ? et le respect des standard web?
    - Le «Model 2 architectures» doit-il être utilisé avec une seule et unique Servlet (MVC2) ?
    - Savez vous ou je peux trouver un exemple complet de «Model 2 architectures» (avec une base de donnée et un site totalement dynamique ?)
    - et au passage, avec Tomcat comment tester des servlets sans redémarrer Tomcat ?

    Merci,
    Cédric

  2. #2
    Membre chevronné
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Par défaut
    Le «Model 1 architectures» est-il dépassé et à proscrire même pour les projets de taille moyenne développé par une seule personne ?
    On recommande le modèle 2 pour des projets relativement important (toute la difficulté étant de cerner la frontière). Personnellement, j'applique ce modèle même pour des petits projets, un peu par habitude, mais aussi parce que ca améliore la structure de l'application.
    Le modèle 2 permet une meilleure séparation entre logique métier et présentation, et permet de mieux séparer les responsabilités au sein d'un projet: tu peux affecter un web designer sur la réal des jsp (à condition de n'utiliser que des taglibs) et des développeurs pour la partie controlleur (actions, actionforms) et modèle (accès aux données)).
    En tout cas, pour un projet comportant 50 pages différentes, pas d'hésitation, même si tu es seul, tu es dans la cible! tu verras, l'application sera plus structurée et plus maintenable.

    Dans mes tests avec le «Model 2 architectures» je n’ai pas utilisé les javabeans, est ce que je peut utiliser des objets générés par mon servlet directement ou je «casse» le mvc ? (En fait, je récupère un objet qui contient le résultat d’un « SELECT * » d’une BDD donc je vois pas comment le faire avec des javabeans)
    si tu récupère un resultset JDBC directement dans une JSP c'est mal! Le javabean sert à stocker l'état du formulaire et a formaliser les données issue de la couche métier en données de présentation. Il suffit simplement de mapper le résultat du requête JDBC sur un ou plusieurs objets. C'est du mapping objet/relationnel, c'est peut être ca qui t'embêtes ?

    Les frameworks comme struts peuvent t’il correspondre à l’architecture que je cherche ?
    ben oui : Struts, mais aussi JSF, Spring MVC, Webwork, etc... sont justement des frameworks implémentant le modèle MVC2 (ou "model 2 architecture").

    Avec les framework est ce que l’on écrit du HTML ou seulement des tag jsp ? et le respect des standard web?
    en utilisant les tag-libs, tu peux écrire la plupart des pages JSP sans un seul gramme de HTML, javascript ou de code JAVA. Dans certains cas tu ne pourras pas, tu peux mélanger sans problème html et tags jsp. Les frameworks web apporte des bibliothèques étendues de tags très intéressantes (notament myfaces+tomahawk, l'implémentation Apache de jsf). Le code généré par les tag-libs respectent les normes W3C (HTML 4 et XHTML 1.0 il me semble)

    Le «Model 2 architectures» doit-il être utilisé avec une seule et unique Servlet (MVC2) ?
    Oui, sinon c'est du modèle 1, huhu

    Savez vous ou je peux trouver un exemple complet de «Model 2 architectures» (avec une base de donnée et un site totalement dynamique ?)
    ce site propose une application implémentée avec différentes combinaisons de framework et "kick-ass" technologies : https://appfuse.dev.java.net/#screenshot. Tu as les sources + les live demos pour jouer avec !

    et au passage, avec Tomcat comment tester des servlets sans redémarrer Tomcat ?
    tu peux développer ? tu veux parler du mode debug sans doute ?

  3. #3
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 18
    Par défaut
    Merci beaucoup pour ta réponse, çà m’éclaire beaucoup !

    Effectivement le model 2 semble plus adapté au projet mais comme je n’ai pas beaucoup de connaissances dans le développement web en Java évidement j’ai encore quelques problèmes à faire quelque chose de propre..

    si tu récupère un resultset JDBC directement dans une JSP c'est mal! Le javabean sert à stocker l'état du formulaire et a formaliser les données issue de la couche métier en données de présentation. Il suffit simplement de mapper le résultat du requête JDBC sur un ou plusieurs objets. C'est du mapping objet/relationnel, c'est peut être ca qui t'embêtes ?
    En fait je récupère un objet (Vecteur) et ensuite selon la page j’ai une «organisation» et j’affiche les infos en conséquences.. Mon code ressemble à çà :
    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
     
    <%@ page import="java.util.Vector" %>
    <%@ page import="java.util.HashMap" %>
    <%@ page import="java.util.Enumeration" %>
    <%
     
    Vector v = (Vector)request.getAttribute("toto");
     
    %>
    <form method="post" action="MaServlet">
    <%
     
    Vector vTemp;
    HashMap hmTemp;
     
    if(v.size()>0) {
    %>
     
    <table border="1">
    <tr>
    <%
     
    vTemp = (Vector)v.get(0);
     
    for(int i=0;i<vTemp.size();i++) {
    	%><td><%= (String)vTemp.get(i) %></td><%
    }
     
     
    %>
    </tr>
    ...
    Le vecteur récupéré contient des informations provenant de ma base de données (j’ignore évidement le nombre d’enregistrements retournés). Donc avec des javabeans c’est apparemment possible, je suis aussi preneur d’un exemple Mais sinon je vais essayer de trouver un exemple sur le net.

    Oui, sinon c'est du modèle 1, huhu
    En fait dans le tutoriels Java jmd à partir des cours pour apprendre Java : http://java.developpez.com/cours/
    Il est expliqué qu’il existe le «modèle MVC type 1» et le «modèle MVC type 2», je croyait que c’était deux possibilités du «modèle 2» (un peu compliqué tout çà)
    Donc en fait la question revient à demander si dans le cadre d’un développement «model 2» toutes les actions doivent être gérées par un seul servlet ? avec mes 50 écran je vais me retrouver avec une servlet énorme nan ?

    Merci pour ton aide,
    Cédric

  4. #4
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 18
    Par défaut
    Pour les Javabeans, je vient de lire ceci:

    You cannot use <jsp:getProperty> to retrieve the values of an indexed property.

    Donc si je comprend bien je suis obligé de récupérer dans mon cas un vecteur via mon bean. c'est exact?

    donc j'aurais un bean avec setMonVecteur et getMonVecteur?

    Mais du coup je suis obligé d'utiliser les tags <% %> comme je le fait actuellement non?

    Merci,
    Cédric

  5. #5
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonjour,
    l'interet du modele MVC2 est d'avoir un seul point d'entree dans ton application.
    Par exemple pour la gestion de la securite ca devient tres interessant d'avoir un seul point d'entree et ca evite dans chaque page JSP ou action,... d'appeler une methode de gestion de securite.

    Je te conseille fortement d'utiliser struts 1.x (struts 2.x gere aussi MVC2 mais je ne le connais pas assez pour me permettre de te le conseiller), car lui permet de gerer MVC2.

    Ca t'evitera de reinventer la roue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Donc en fait la question revient à demander si dans le cadre d’un développement «model 2» toutes les actions doivent être gérées par un seul servlet ? avec mes 50 écran je vais me retrouver avec une servlet énorme nan ?
    Ta remarque est pertienet et Struts t'apportera un esolution a ce probleme. Tu as uen servlet Action Struit qui est a l'ecoute de toute url se terminant par .do (en fct de la config)) et te dispatchera sur la bonne classe Action (que tu aurras defini dans un fichier xml struts-config)

    Dans struts-config tu mappe tes urls avec tes Actions Java a executer
    ex : monurl.do te permettra d'appeler la classe Action MonUrlAction

    Struts se charge entre autres de populer ton formulaire HTLML dans un objet JAVA ActionForm. Du coup tu ne te soucies pas de recuperer les parametres du formulaire avec request.getParameter et dans ton formulaire HTML, tu n'as pas besoin de remettre la valeur dans tes champs HTML. Tu as des JSP simples et aucun code Java. Ca c'est une regle importante pour avoir des JSP lights. Dans Struts la JSP est uniquement utilise en tant que View.

    SI tu veux tu peux aller voir le schema d'une archtecture (Struts/Spring/Hibernate) que j'ai fait sur http://gestcv.sourceforge.net/fr/architecture.html
    te donner une meilleur idee de Struts

    Angelo

  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
    Tu confonds un peu...
    Avec MVC2, tu n'as certes qu'une seule servlet (il faut voir ça comme un frontal), mais tu peux avoir autant de contrôleurs que tu veux.
    Tu ne code strictement rien dans la servlet, tu dois créer des objets étendant Action ou DispatchAction ou LookupDispatchAction (pour les contrôleurs) et ActionForm (pour les objets "formulaire").

    Mais comme on te l'a déjà dit, autant passer à struts tout de suite (ou JSF)

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 18
    Par défaut
    En fait structs me fait un peu peur pour plusieurs raisons:

    - Venant de PHP il me semble par exemple plus simple de développer un forum (comme celui de developpez.com) avec une techno proche de PHP comme par exemple le "model 1", qu'en pensez vous?

    - L'utilisation de Struts va limiter l'application web je pense, j'ai peur de perdre le contrôle de certaines choses, par exemple, si je veux mettre un script Ajax et différents JavaScript çà me parraît bien plus compliqué.. et puis comment gérer des formulaires complexes (du genre avec une checkbox associée à différents enregistrements provenant d'une base de données)

    - En voyant les exemples de choses développés en Struts/JSF j'ai pas vraiement l'impression que cela soit très simple à apprendre. Il me reste 4 mois de stage pour faire cette application (qui va réutiliser du code déjà fait) 4 mois c'est suffisant?

    - En fait j'ai pas l'impression de réinventer la roue car pour le test que j'ai fait j'ai codé l'application assez rapidement.. Je ne sais pas si c'est bien codé mais çà me semble beaucoup plus clair.

    - Sur des pages avec beaucoup d'affichages (choses venant d'une base de données) est-ce que Struts est vraiment éfficace?

    - Est ce que vous connaissez des sites pros qui utilisent struts? (pour que je puisse voir ce que peut réelement donner Struts car sur tout les exemples que j'ai vu ce sont des choses basiques)

    - Bon sinon le choix entre tous les framework qui existent me fait aussi un peut peur, comment bien choisir?

    - Est ce que struts va continuer à être maintenu et à la "mode" ?

    Merci,
    Cédric

  8. #8
    Membre chevronné
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Par défaut
    - Venant de PHP il me semble par exemple plus simple de développer un forum (comme celui de developpez.com) avec une techno proche de PHP comme par exemple le "model 1", qu'en pensez vous?
    Le modèle d'architecture et le langage sont deux choses différentes. Il est vrai que PHP permet de développer rapidement des sites simples (plus rapidement qu'en java). Mais développer une application de gestion en php sans utiliser de framework c'est du masochisme . Il existe d'aileurs une multitude de framework open-source pour PHP utilisant MVC (par exemple prado qui s'apparente à JSF ou Webforms de dotnet). Les sites de forum, et même les blog, wiki, messagerie, et autres sites de communauté sont des cas extrêmes : on utilise généralement un logiciel tout fait (ex: phpBB pour les forums) qu'on va customiser au niveau de la présentation et quelques fonctionnalités seulement, la grande partie des fonctionnalités restant inchangée.

    - L'utilisation de Struts va limiter l'application web je pense, j'ai peur de perdre le contrôle de certaines choses, par exemple, si je veux mettre un script Ajax et différents JavaScript çà me parraît bien plus compliqué.. et puis comment gérer des formulaires complexes (du genre avec une checkbox associée à différents enregistrements provenant d'une base de données)
    Non justement, l'intérêt de Struts est de simplifier les choses complexes, en laissant simple les choses simple. Si tu veux utiliser des intéractions AJAX dans tes pages, tu peux utiliser la librairie Ajax-tags. Coté javascript, tu peux intéragir facilement avec le code html généré par les taglibs. En cas de difficulté (compatibilité entre ton code et celui généré par exemple) tu trouves toujours des solutions dans la communauté. Struts sait gérer parfaitement les formulaires complexes (tu as essayé le lien appfuse?).
    Si le formulaire est vraiment complexe et que tu galère avec Struts, c'est peut -être un formulaire à retravaillé. Ensuite si tu n'arrives pas à le faire avec les taglibs Struts, tu peux toujours utiliser de l'html/javascript. C'est frustrant de devoir trouver une solution de contournement, mais struts te permettra de couvrir 99% des cas. Au pire tu developperas ta propre taglib ou étendra un tag existant.

    - En voyant les exemples de choses développés en Struts/JSF j'ai pas vraiement l'impression que cela soit très simple à apprendre. Il me reste 4 mois de stage pour faire cette application (qui va réutiliser du code déjà fait) 4 mois c'est suffisant?
    le temps d'apprentissage peut être un point bloquant, mais tu es en stage non ? Sérieusement ca me semble jouable et tu seras aidé par une communauté très active (dont developpez.com !). Avec Struts tu passeras plus de temps sur la mise en place du framework et les premieres pages, mais tu gagneras du temps sur les suivantes. Et ca te fera une techno incontournable sur ton CV, en plus des techniques et concepts intéressant qui tourne autour de Struts.
    Par contre ne t'aventure pas dans JSF, la communauté a moins de recul que sur Struts.

    - En fait j'ai pas l'impression de réinventer la roue car pour le test que j'ai fait j'ai codé l'application assez rapidement.. Je ne sais pas si c'est bien codé mais çà me semble beaucoup plus clair.
    Il est clair qu'on peut réaliser très rapidement un framework maison basé sur MVC ou MVC2. Mais on se rend vite compte qu'on passe du temps à l'enrichir pour pouvoir géré telle ou telle fonctionnalité. Par exemple toute application de gestion nécessite au moins de la validation avec la gestion des erreurs, l'externalisation des messages et la langue, des composants réutilisables, etc... c'est sur ces fonctionnalités que tu gagneras du temps.

    - Sur des pages avec beaucoup d'affichages (choses venant d'une base de données) est-ce que Struts est vraiment éfficace?
    en terme de performance : oui, en terme de productivité : si tu utilises toujours les mêmes taglib : oui.

    - Bon sinon le choix entre tous les framework qui existent me fait aussi un peut peur, comment bien choisir?
    En quatre mois tu ne vas pas tester beaucoup de framework. Celui qui permet de trouver le meilleur compromis entre maintenance, productivité, apprentissage, performances.
    Il y a Struts, mais Spring me semble un bon choix également car il propose un module web basé sur MVC, et surtout te permet bien plus en terme de structuration d'application.


    - Est ce que struts va continuer à être maintenu et à la "mode" ?
    Oui, même struts 1 est toujours actif (version 1.3.8 sortie dernièrement) alors que Struts 2 est sorti ( pour s'en rendre compte : http://struts.apache.org/ ). De plus il y a un existant énorme basé sur Struts, bien plus que d'autres framework, la page ne va pas se tourner du jour au lendemain. Struts est certe un peu viellot, on se tourne de plus en plus vers le client riche. Mais il réagit en proposant des librairies AJAX ou des connecteurs JSF ( JSF est plus un framework axé présentation qui peut compléter Struts). Spring Framework est le framework qui monte car il propose une alternative très intéressante et élégante au modèle J2EE pur (notament les EJB).

  9. #9
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 18
    Par défaut
    Merci pour toutes ces informations !

    Je crois que j'ai un problème de compréhension, quand on parle "d'application de gestion", c'est quoi exactement?

    Car ce que je dois développer se rapproche d'un forum, beaucoup de formulaires et beaucoup de choses provenant de la base de donnée à afficher.

    appfuse reste quand même assez simple je trouve au niveau des pages côté utilisateur, c'est pas comme un forum.

    Pour ceux qui veulent un exemple simple:
    http://www-igm.univ-mlv.fr/~dr/XPOSE...onclusion.html
    Pour le moment Tomcat ne veut pas le lancer mais rien que pour voir les sources c'est pas mal.

    Cédric

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/04/2015, 01h11
  2. Réponses: 2
    Dernier message: 03/05/2010, 15h01
  3. [Kylix] Kylix et le développement web...
    Par nahmsath dans le forum EDI
    Réponses: 4
    Dernier message: 24/10/2002, 20h27

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