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 :

[servlet] Envoi de page web


Sujet :

Servlets/JSP Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut [servlet] Envoi de page web
    Je désire que ma servlet renvoi au navigateur des page (web,HTML) or je ne trouve sur le net que des exemples ou la page renvoyé est creer a la volé (tout une serie de println) mais es ce possible de renvoyer des pages que l'on a préparé a l'avance ? comme pour un site web standard en fait (avec CSS etc).

    De plus je ne maitrise absoluement pas la prog web et je me posais des question quand à l'accessibilité d'un tel site :
    Même pour la première page du site, il faut s'adresser à la servlet ? C'est à dire que l'on est obligé d'avoir un lien en www.monsite.cm/servlet peut pas faire comme tout le monde www.monsite.com ?

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Pour une jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RequestDispatcher _requestDispatcher = this.getServletContext().getRequestDispatcher(JSPName);
                    // On forward pour avoir la réponse.
                    _requestDispatcher.forward(request, response);

    pour une page HTML:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.setHeader("Location", HTMLName) ;

  3. #3
    Membre chevronné

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Par défaut
    Si ce que tu veut est arriver directement vers une page HTML, tu peut aussi trés simplement en ne pas mappant toute les URL dans ton web.xml.

    En effet, le web.xml mappe des URl vers une servlet, les URL non mappé vers une servelt seront servie directement : accés direct au fichier!

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut
    Et je suppose que "location" indique le repertoire de mes page web et HTMLName c'est le nom de ma page web ? J'ai bon ?

    pour le moment j'ai simplement fais ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    res.setHeader("C:\\Documents and Settings\\utilisateur3\\Mes documents\\dev\\transfertFichier\\pages\\","upload.html") ;
    et bien sur ce n'est pas bon ...
    Je ne sais pas si c'est moi mais je ne trouve pas franchement d'informations sur les servlet sorti de la base qui consiste à écrire sur le flux de reponse ligne par ligne la page web ...

    Edit : Woodwaï et à ce moment c'est simplement le serveur web qui se charge de ma page c'est ça ?

  5. #5
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par K-Kaï
    Et je suppose que "location" indique le repertoire de mes page web et HTMLName c'est le nom de ma page web ? J'ai bon ?

    pour le moment j'ai simplement fais ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    res.setHeader("C:\\Documents and Settings\\utilisateur3\\Mes documents\\dev\\transfertFichier\\pages\\","upload.html") ;
    et bien sur ce n'est pas bon ...
    Je ne sais pas si c'est moi mais je ne trouve pas franchement d'informations sur les servlet sorti de la base qui consiste à écrire sur le flux de reponse ligne par ligne la page web ...

    Non "Location", c'est une variable de l'entete http, on ne la modifie, le deuxième paramètre doit etre l'url de ta page ..

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut
    Ok ok, et ensuite rien d'autre a effectuer pour que cela fonctionne ?
    Juste cette ligne suffit a faire afficher une page ? Pas de res.quelque chose pour envoyer au navigateur ?

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 79
    Par défaut
    tu devrais regarder le tutoriel suivant qui t'explique comment tout marche

    http://java.developpez.com/cours/servlets/

  8. #8
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 79

  9. #9
    Membre chevronné

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Par défaut
    K-Kaï : je réitère que si ce que tu veut c'est directement accéder à des HTML sans traitement spécifique, alors le plus simple et de ne pas mapper les HTML

    dans ton web.xml tu ne mappe que les *.do par exemple, toute tes actions tu les terminent par .do

    Tout ce qui n'est pas mappé sera servit par la SimpleFileServlet qui s'occupe juste de les envoyer directement (ce qui revient à dire en effet que c'est le serveur web qui les sert).

    Si tu veut faire un traitement quand même, dans ce cas là, tu peut effectivement suivre l'explication de Sniper37

  10. #10
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par woodwai
    K-Kaï : je réitère que si ce que tu veut c'est directement accéder à des HTML sans traitement spécifique, alors le plus simple et de ne pas mapper les HTML

    dans ton web.xml tu ne mappe que les *.do par exemple, toute tes actions tu les terminent par .do

    Tout ce qui n'est pas mappé sera servit par la SimpleFileServlet qui s'occupe juste de les envoyer directement (ce qui revient à dire en effet que c'est le serveur web qui les sert).

    Si tu veut faire un traitement quand même, dans ce cas là, tu peut effectivement suivre l'explication de Sniper37
    il n'utilises pas Struts!!!

  11. #11
    Membre chevronné

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Par défaut
    Et alors, l'utilisation du web.xml est commun à toute webapps. Et dans mes souvenir tout ce qui n'est pas mappé sera servit directement par le serveur web.

    Mais bon, il faut tester, personnelement celà fait longtemps que je n'ai pas fait de webapp sans struts

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut
    Ma page n'est pas mapper dans mon web.xml, mais pour le moment pas de serveur web en place, juste tomcat qui tourne.

    Moi je n'y connais strictement rien en developpement web

    Ce que j'aimerais c'est que la pour tester lorsque j'appel ma servlet sans rien (par GET) elle me retourne ma page web statique (en HTML) sans que je n'est besoin de faire comme dans les tuto c'est a dire ecrire tout a la suite sur le flux.

    Voici ce que j'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
     
            /*res.setContentType("text/html");
     
            PrintWriter out = res.getWriter();
     
            out.println("<html><head></head><body>");
            out.println("Hello world !!!");
            out.println("</body></html>");
            */
            res.setHeader("Location","C:\\Documents and Settings\\utilisateur3\\Mes documents\\dev\\transfertFichier\\pages\\upload.html") ;
        }

  13. #13
    Membre émérite Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Par défaut
    euh ... le location fonctionne je pense comme en PHP ... autrement dit, avec un lien relatif, donc fait plutot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    res.setHeader("Location","../pages/mapage.html");
    par exemple

    ou bien une URL absolue mais en partant de ton site, et non de l'emplacement physique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    res.setHeader("Location","http://localhost:8080/MonAppli/pages/mapage.html");

  14. #14
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    ecrit une jsp et teste le code que je t'ai montré au debut, avec le requestDispatcher...

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut
    J'ai déplacer mon repertoire de page sous le dossier WEB-INF et il accepte de prendre la page JSP grace a ta methode sniper37

    Mais par contre, pas moyen que cette JSP prenne en compte le fichier CSS qui lui est associé il est placé dans le même repertoire que la JSP soit l'arborescence suivante :

    transfertFichier
    WEB-INF
    pages

    Et le lien fait dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <link rel="stylesheet" type="text/css" href="stylecss.css" />
    J'ai testé pas mal de liens differents /pages/stylecss.css - /stylecss.css ...
    mais pas moyen ... J'ai vu un post d'archive http://www.developpez.net/forums/arc...hp/t-9231.html
    mais je ne comprend pas ce qu'ils entendent par contexte de ma servlet dans ce cas ? (j'ai egalement essayé /transfertFichier/GestionServlet...)

    De plus au niveau de la page en html, pas moyen de la faire afficher (bon voila j'ai remplacer .html par .jsp mais c'est la même page), mais ca me tenterai bien d'arriver à afficher le html aussi ...

    L'envoi JSP qui marche (sauf css) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    RequestDispatcher _requestDispatcher = this.getServletContext().getRequestDispatcher("/pages/upload.jsp");
            _requestDispatcher.forward(req, res);
    L'envoi html qui foire (il n'y a vraiment rien a faire a la suite ?):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    res.setHeader("Location","/pages/upload.html") ;

  16. #16
    Membre émérite Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Par défaut
    Citation Envoyé par K-Kaï
    L'envoi JSP qui marche (sauf css) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    RequestDispatcher _requestDispatcher = this.getServletContext().getRequestDispatcher("/pages/upload.jsp");
            _requestDispatcher.forward(req, res);
    L'envoi html qui foire (il n'y a vraiment rien a faire a la suite ?):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    res.setHeader("Location","/pages/upload.html") ;
    en faisant /pages/upload.html, tu demandes a ton projet de partir de la racine... le probleme est que le "/" est interprété différemment selon les serveurs. Par exemple sous Apache, cela correspond au localhost, donc, je miserai pour la même signification pour Tomcat...

    Essaie plutot un VRAI lien relatif comme ../pages/upload.html si possible (ou ./pages/upload.html, ou pages/upload.html ... selon le cas désiré )

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut
    Oui mais ce qui est bizarre c'est que pour la JSP cela fonctionne bien comme ca donc cela devrait être pareil pour la page HTML ??

    Toujours mon problème de CSS et d'affichage de la page HTML ...

    Sinon pour information, TOMCAT veut absoluement des chemins d'acces commencant par /.

  18. #18
    Membre émérite Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Par défaut
    Et en essayant un /MonProjet/pages/upload.html, ca donne quoi ?

    Sinon, je viens de lire une petite page d'info sur ce sujet et ils proposent ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String site="http://www.google.fr";
    res.sendRedirect(site);
    cela permet de remplacer le setHeader() qui doit d'après leur exemple être utilisé ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String site="http://www.google.fr";
    res.setStatus(res.SC_MOVED_TEMPORARILY);
    res.setHeader("Location", site);
    EDIT: En lisant d'avantage de docs sur le sujet, il existe des différences entre le requestDispatcher.forward() et sendRedirect() ... je pense que tu devrais bien lire cela afin de choisir la bonne méthode... (doc trouvable a partir de ou sur DVP)

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    370
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 370
    Par défaut
    Ola Todos

    Eheh merci BizuR ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String site="http://www.google.fr";
    res.sendRedirect(site);
    marche correctement, je vais aller jeter un oeil à ce que tu me dis au niveau des docs ...

    Le seul point qui reste obscur c'est la feuille de style CSS qui ne veut pas être prise en compte ... Je pensez que son lien etait à donner par rapport à la page qui l'inclut mais visiblement non.

Discussions similaires

  1. Servlet HttpSession et page web
    Par tigurius dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 29/12/2011, 16h05
  2. Réponses: 3
    Dernier message: 04/11/2006, 08h23
  3. [Mail] Envoi email contenat page web
    Par Mister Nono dans le forum Langage
    Réponses: 6
    Dernier message: 16/07/2006, 19h40
  4. un textfield dans une page web à l'aide d'une servlet
    Par amelA dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 14/05/2006, 18h54
  5. [Servlet]Récupérer le contenu d'une page web
    Par Jarodnet dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 06/10/2005, 15h47

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