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 :

utiliser une seule servlet pour toutes les jsp


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut utiliser une seule servlet pour toutes les jsp
    Bonjour,

    Je souhaiterais utiliser une seule servlet pour gérer l'affichage de toutes mes jsp. Le problème ce que je n'y arrive pas ^^

    Dans mon web.xml, j'ai mis ca pour intercepter toutes les url
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	<servlet-mapping>
    		<servlet-name>home</servlet-name>
    		<url-pattern>/*</url-pattern>
    	</servlet-mapping>
    Et c'est dans ma servlet que ca bloque :
    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
    	public void doGet(HttpServletRequest request, HttpServletResponse response) 
    			throws ServletException, IOException{
     
    		String url = null;
    		String action = request.getPathInfo().toLowerCase();
    		String methode = request.getMethod().toLowerCase();
     
    		System.out.println(">>>>>"+action);
     
    		if (action.equals("/inscription") && methode.equals("get"))
    			url = "urlInscription";
    		else if (action.equals("/main") && methode.equals("get"))
    			url = "urlHome";
     
                    //le forward va chercher dans une map l'adresse page correspondant à la chaine  
                 getServletContext().getRequestDispatcher((String)params.get(url)).forward(request, response);
    	}
    L'erreur vient du fait que quand je demande /main par exemple, j'obtient ca comme trace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>>>>/main 
    >>>>>/WEB-INF/vues/main.jsp
    Comme je débute juste, le fonctionnement et meme si la trace me parrait pas anormale, j'ai du mal a trouver comment résoudre mon problème ^^

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 511
    Par défaut
    Il te faut structurer ton appli en séparant ton code de tes jsp
    Ta servlet de base sert uniquement aux actions d'aiguillage vers des classes de traitement qui retourneront les données en variables de session sous forme de tableau par exemple.
    Ta servlet de base est associé à une jsp qui ne contient que l'entête et le pied de page. Dans le body tu appelles tes sous jsp liées aux variables de session.

    Donc pour l'affichage tu appelles ta jsp qui appelle les sous 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
     
    servlet:
    getServletContext().getRequestDispatcher(urlMain).forward(request,response);
     
    jsp de base
    <%
    //on récupère les valeurs dans la session
    String lien1 = (String)session.getAttribute("lien1");
    if(lien1 == null) lien1 = "";
    %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html> ....
     
    <jsp:include page="<%=lien1 %>"/>
    ...
    </html>
    nom des sous jsp dans les var de session, ces même sous jsp appellent les var de session associées pour le remplissage.
    Voila tu es passé à une structure MVC

  3. #3
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Nan mais mon appli respecte le mvc, le code des jsp est pas dans la servlet, et c'est pas vraiment ca le problème.

    J'ai testé ce que tu m'as dit en vitesse pour voir, mais ca je vois mal comment ca peut marcher, ou du moins ya des trucs que j'ai pas du bien comprendre.

    Par exemple, le <url-pattern>/*</url-pattern> j'en fais quoi? Je mets le path de ma servlet? genre /servlet? Parce que si j'ai des liens à faire, comment je m'y prends? ^^ Je peux pas tous les faire pointer tous vers cette uri...

    Par ailleurs, dans la jsp body que je chargerais, j'ai des taglibs perso pour gérer l'affichage de mes données, et en utilisant ta méthode, elles ne sont pas du tout interprétées, donc j'ai meme pas d'affichage ^^.

  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
    Passe à Struts, ça fait ça très bien...
    Sinon, que cherches-tu à faire, quelle est la problèmatique au juste ?

    Je ne vois aucun intérêt à n'avoir qu'une seule servlet dans le modèle mvc, donc, tu dois avoir une idée derrière la tête (qui est peut-être liée à une méconnaissance de la techno)

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

  5. #5
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    En fait, dans toutes mes servlets, je trouve qu'il y a pas mal de code un peu redondant, que ca soit dans la fonction init() ou dans le traitement des requetes (pour charger des données dans le modèle des jsp de mes menus par exemple), donc je me disais que ca serait plus simple d'avoir une seule servlet qui "factoriserait" un peu tout ces traitements et qui intercepterait toutes les requetes, chargerait les données qui vont bien et enverraient au final les pages demandées.

    Par ailleurs, je trouvais plus clair d'avoir une seule classe a gérer que d'en avoir des dizaines qui vont sensiblement faire la meme chose.

    Mais effectivement comme tu dis, je connais pas bien la techno. Si ca se trouve c'est pas un truc a faire ^^

  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
    Rien n'empêche de créer des classes pour ces traitements communs et de les utiliser partout... mais créer une seule servlet qui "sert" différent type de formulaire, ça n'est pas vraiment dans le concept mvc, même si dans l'absolu, on peut le faire...
    Disons qu'il serait judicieux de créer un contrôleur (1 servlet) par type d'écran (et donc de formulaire), quitte à créer une classe abstraite de base qui contienne les méthodes communes et qu'étendraient les contrôleurs.
    Il y a différentes façons de faire...

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

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

Discussions similaires

  1. utiliser une seule commande pour créer plusieur fichier
    Par waldomania dans le forum Administration système
    Réponses: 1
    Dernier message: 13/12/2009, 16h43
  2. une seule boite! pour tout une base
    Par stephanech dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 29/04/2009, 07h20
  3. Réponses: 13
    Dernier message: 29/05/2008, 10h27
  4. [Formule]Une seule formule pour toute la colonne ?
    Par marot_r dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/04/2007, 19h19
  5. [VS 2005][C#] Une seule icone pour tous les formulaires.
    Par Gold.strike dans le forum Windows Forms
    Réponses: 5
    Dernier message: 26/09/2006, 14h56

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