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

Spring Web Java Discussion :

[Spring MVC] Inclure une Servlet | Creation de menu web dynamique


Sujet :

Spring Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut [Spring MVC] Inclure une Servlet | Creation de menu web dynamique
    Bonjour,

    Dans un développement Web, j'ai une barre de menu conséquente. Cette barre se charge en fonction du profil de l'utilisateur.
    Actuellement j'ai une seule page JSP dont je fais un 'include' en haute de chaque page.

    Pour obtenir une barre de menu "dynamique" en fonction du profil, je pense me créer une classe "MenuFactory" qui serais chargée de me créer mon menu et de me le rendre dans une String.

    Pour que cela sois bien propre je pense écrire une Servlet qui étendrais ou contiendrais "MenuFactory" et que j'incluerais à la place de ma JSP actuelle.

    Mais je ne sais pas si il est possible d'inclure une Servlet. J'ai bien tenté d'utiliser les mamppings de mon dispatcher mais cela ne semble pas fonctionner (ce qui me semble normal).



    Avez-vous une idée de comment inclure une Servlet via l'instruction "<%@ include file="../includes/menu.inc.jsp"%>" ou sur une autre façon de gérer le menu ?


    Merci


    Edit : Il semblerait que faire un include d'un Servlet simple fonctionne : http://www.thescripts.com/forum/thread17106.html mais j'aimerais profiter de Spring..

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 68
    Par défaut JSP = servlet
    Une JSP, une fois compilée est une servlet. Donc en toute logique je ne vois pas pourquoi tu ne pourrais pas faire une include de ta servlet...

    As-tu essayé d'appeller ta servlet dans ton include ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Oui bien sur j'ai essayé mais la servlet n'est jamais trouvée, j'ai essayé avec différents 'pattersn' d'accés à la servlet dans mon web.xml mais le serveur ne trouve jamais la Servlet..

    Mon "context" est le suivant.
    Je dois pouvoir faire un include de cette Servlet/Page ou que je sois dans l'application. Pour l'instant je me contentais de faire un <@ include file="../includes/menu.jsp" /> et de changer le chemin d'accès à la jsp en fonction de l'emplacement mais ici il semble que je ne puisse faire l'include qu'en renseignant "/MenuServlet" mais Tomcat ne trouve jamais la ressource

    Mon web.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <servlet>
            <servlet-name>menuServlet</servlet-name>
            <servlet-class>be.me.MenuServlet</servlet-class>
        </servlet>    
        <servlet-mapping>
        	<servlet-name>menuServlet</servlet-name>
        	<url-pattern>/MenuServlet</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
        	<servlet-name>menuServlet</servlet-name>
        	<url-pattern>/*/MenuServlet</url-pattern>
        </servlet-mapping>
    et l'inclusion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <%@ include file="/MenuServlet" %>
    et enfin, la réponse :
    org.apache.jasper.JasperException: /WEB-INF/views/jsp/home.jsp(1,1) /WEB-INF/views/jsp/includes/menu.inc.jsp(2,0) Le fichier "/MenuServlet" n'a pas été trouvé
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:88)
    org.apache.jasper.compiler.Parser.processIncludeDirective(Parser.java:334)
    org.apache.jasper.compiler.Parser.parseIncludeDirective(Parser.java:367)
    org.apache.jasper.compiler.Parser.parseDirective(Parser.java:468)
    org.apache.jasper.compiler.Parser.parseElements(Parser.java:1426)
    org.apache.jasper.compiler.Parser.parse(Parser.java:133)
    org.apache.jasper.compiler.ParserController.doParse(ParserController.java:216)
    org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:167)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:306)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:167)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:239)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1158)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    Je soupçonne le /WEB-INF/ de me poser quelques problèmes..
    Dernière modification par Invité ; 10/03/2008 à 14h11.

  4. #4
    Membre actif Avatar de yostane
    Homme Profil pro
    test
    Inscrit en
    Mars 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : test

    Informations forums :
    Inscription : Mars 2006
    Messages : 84
    Par défaut
    bonjour
    moi je te propose de charger le profil à partir du contrôleur, et de l'inclure dans ta vue unique comme modèle.

    au fait, tu pourrais me passer les méthodes que tu utilises pour trouver le profil d'un utilisateur. mon tp porte sue ce sujet (profiling sémantique)

    merci

  5. #5
    Invité
    Invité(e)
    Par défaut
    C'est, à terme, ce que je ferais mais je voudrais inclure une servlet dont le rôle serait de générer le menu en fonction du profile..

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 59
    Par défaut
    A mon avis le problème que tu rencontres est plutot lié à un mauvais chemin d'accès à ton menu...?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ include file="/WEB-INF/vues/includes/header.jsp" %>
    Voilà typiquement le genre d'inclusion que je fais et je ne recontre pas de problème ... A moins que je n'ai pas bien saisi ton problème....

    Rien ne t'empêche par la suite de gérer ton menu via un Controller et de faire dans tes pages JSP un include de ton menu. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <%@ include file="/WEB-INF/vues/includes/header.jsp" %>
    <%@ include file="/WEB-INF/vues/includes/menu.jsp" %>
    La suite reste une histoire de paramêtrage dans menu.jsp (afficher tel ou tel menu en fonction d'une variable dans le modèle passé en paramètre par ton Controller...

    En poussant le vice, on pourrait même imaginer un Intercepteur :
    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
    34
    35
    36
    package mova.logging.web;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import mova.logging.service.UserManager;
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
     
    /**
     *
     * @author Mohicane
     */
    public class UserLoadingInterceptor implements HandlerInterceptor {
     
        private UserManager userManager;
     
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object command) throws Exception {
            return true;
        }
     
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object command, ModelAndView modele) throws Exception {
            modele.addObject("user", userManager.getCurrentUser(request));
        }
     
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object command, Exception error) throws Exception {
        }
     
        public UserManager getUserManager() {
            return userManager;
        }
     
        public void setUserManager(UserManager userManager) {
            this.userManager = userManager;
        }
     
    }
    J'utilise ce dernier parce que dans toute mes pages je veux référencer l'utilisateur courant ... cela me permet par exemple d'afficher dans toute mes page dans le header "Bienvenue {nom de l'utiliseur}"

    Pour la configuration d'intercepteurs c'est pas bien compliquer:
    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
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
            <property name="interceptors">
                <list>
                    <bean id="userLoadingInterceptor" class="mova.logging.web.UserLoadingInterceptor" autowire="byName" />
                </list>
            </property>
            <property name="mappings">
                <props>
                    <!-- Mapping pour le loggin d'utilisateur -->
                    <prop key="/login.html">loginController</prop>
                    <prop key="/subscribe.html">subscribeController</prop>
                    <prop key="/valider.html">validerInscriptionController</prop>
                    (...)
                </props>
            </property>
        </bean>
    Je pense que tu sauras te débrouiller avec ça?

    Mohicane

Discussions similaires

  1. inclure une servlet dans une page JSF
    Par toure32 dans le forum JSF
    Réponses: 2
    Dernier message: 18/02/2010, 09h41
  2. inclure une servlet dans une page jsp
    Par shawty dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 19/08/2008, 11h16
  3. Réponses: 1
    Dernier message: 18/01/2007, 11h09
  4. [HTML] Inclure une Servlet dans une page HTML
    Par boux2 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/11/2006, 14h11
  5. Inclure une servlet dans une JSP
    Par keopsk dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 26/06/2006, 11h44

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