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 :

temps de chargement d'une page html depuis un serveur web


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 53
    Points : 38
    Points
    38
    Par défaut temps de chargement d'une page html depuis un serveur web
    bonjour
    je programme une application avec des servlets qui affiche des pages html
    y a-t-il une methode ou un autre outil qui permet de calculer le temps de chargement d'une page html
    merci d'avance

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Points : 439
    Points
    439
    Par défaut
    tu peux utiliser le filter...
    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
     
    package .....;
    import ....;
    public final class TimerFilter implements Filter 
    {
     
        public void doFilter(ServletRequest request, 
                             ServletResponse response,
                             FilterChain chain)
            throws IOException, ServletException 
        {
     
            long startTime = System.currentTimeMillis();
            chain.doFilter(request, response);
            long stopTime = System.currentTimeMillis();
            System.out.println("Time to execute request: " + (stopTime - startTime) + 
                " milliseconds");
             request.setAttribute("Time", stopTime - startTime);
     
        }
    }
    Dans le fichier web.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <filter>
            <filter-name>Timer</filter-name>
            <filter-class>....TimerFilter</filter-class>
    </filter>
     
        <filter-mapping>
            <filter-name>Timer</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    et hop dans ta jsp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Temps d'exécution de la requête : <bean:write name="Time" scope="request"/> ms

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 53
    Points : 38
    Points
    38
    Par défaut
    dabord merci pour la reponse
    j'utilise des servlets et non des jsp
    je veux savoir où puis-je mettre la class filtre par apport à ma servlet(menuservlet)?

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Points : 439
    Points
    439
    Par défaut
    Citation Envoyé par mitoubra
    dabord merci pour la reponse
    j'utilise des servlets et non des jsp
    je veux savoir où puis-je mettre la class filtre par apport à ma servlet(menuservlet)?
    La class Filter est appelée avant l'appel de la servlet automatiquement par le serveur d'application dès lors que l'url appelée matche avec le pattern défini dans le web.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <url-pattern>/*</url-pattern>
    tu n'as rien à coder de spécifique.
    Après, si tu veux afficher le temps d'exécution de la servlet sur le client, tu es obligé d'utiliser une jsp pour récupérer la valeur de "Time" que tu as mis dans la request... en effet, l'appel de chain.doFilter(request, response) fait que tu appelles ta servlet... donc, le calcul du temps d'exécution se fait une fois que ta servelt ait fini de s'exécuter... ;-)

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 53
    Points : 38
    Points
    38
    Par défaut
    donc,on met la class filtre dans le code de ma servlet en remplacant chaine par le nom de ma servlet(menuservlet)

    public void doFilter(ServletRequest request,
    ServletResponse response,
    FilterChain menuservlet)
    throws IOException, ServletException
    {

    long startTime = System.currentTimeMillis();
    menuservlet.doFilter(request, response);
    long stopTime = System.currentTimeMillis();
    System.out.println("Time to execute request: " + (stopTime startTime+
    " milliseconds");
    request.setAttribute("Time", stopTime - startTime);

    }
    }

    puis

    debut d'execution de ma servlet

  6. #6
    Membre averti

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Points : 439
    Points
    439
    Par défaut
    la class TimeFilter est une class que tu écris dans un package (celui que tu veux); cette class n'a rien à voir avec ta servlet... ce sont 2 choses différentes.

    Dans le fichier web.xml, tu mets le nom du package et de la class de la class TimeFilter que tu as précédemment créé.

    C'est le serveur d'application TOUT SEUL qui appelle la class Filter, indépendament de ta servlet....

    tu as donc :
    la class filter pour calculer le temps d'exécution de la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public final class TimerFilter implements Filter {
    }
    la servlet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class MenuServlet extends HTTPServlet {
    .....
    }
    ce sont 2 objets java qui ne doivent pas être liés par la programmation : ils doivent compiler l'un sans l'autre.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 53
    Points : 38
    Points
    38
    Par défaut
    donc ce que je comprend est que la classe filtre qui est située dans ma servlet est éxecutée une fois ma servlet est appelée, et avant sa terminaison normalement la variable time contiendra la valeur du temps d'éxecution dont je doit la récuperer et l'afficher
    et es-ce-que je peut utiliser ma servlet directement pour afficher le resultat ou bien utiliser une servlet a part

  8. #8
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par mitoubra
    et es-ce-que je peut utiliser ma servlet directement pour afficher le resultat ou bien utiliser une servlet a part
    Qu'est-ce que tu entends par là ?

    Le principe du filtre, c'est que tu le mets en place indépendamment des servlets. Il sera appelé automatiquement par le serveur au moment qui va bien et de manière totalement transparente pour les servlets. Donc continue à utiliser tes servlets actuels, tu n'as besoin de rien faire de ce côté-là.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  9. #9
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 53
    Points : 38
    Points
    38
    Par défaut
    bon j'ai essayer mais ca na pas marcher.il y a une erreur
    voici mon code de la classe filter

    package projet1_0;
    import javax.*;
    import javax.servlet.Filter;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.FilterChain;
    import java.io.IOException;

    public class TimerFilter implements Filter {
    public TimerFilter() {
    }
    public void init(FilterConfig filterConfig) throws ServletException {

    throw new java.lang.UnsupportedOperationException("Method init() not yet implemented.");

    }
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    long startTime = System.currentTimeMillis();
    chain.doFilter(request, response);
    long stopTime = System.currentTimeMillis();
    System.out.println("Time to execute request: " + (stopTime - startTime) +
    " milliseconds");
    request.setAttribute("Time", stopTime - startTime);


    }
    public void destroy() {

    throw new java.lang.UnsupportedOperationException("Method destroy() not yet implemented.");
    }

    }


    l'erreur est : "TimerFilter.java": setAttribute(java.lang.String,java.lang.Object) in javax.servlet.ServletRequest cannot be applied to (java.lang.String,long) at line 25, column 19

  10. #10
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par mitoubra
    l'erreur est : "TimerFilter.java": setAttribute(java.lang.String,java.lang.Object) in javax.servlet.ServletRequest cannot be applied to (java.lang.String,long) at line 25, column 19
    Quel dommage !! Ben lis bien le message : un long (avec un petit l) n'est pas un objet et ne peut donc pas être mis dans la requête en tant qu'attribut. Il faut que tu transformes ton long en objet (en Long (avec un grand L), donc) pour pouvoir le mettre dans la requête.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  11. #11
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 53
    Points : 38
    Points
    38
    Par défaut
    salut

    je travaille dans un enverenemment jbuilder9 et dans jbuilder9 en peut pas accedé directement au fichier web xml mais en fin j'ai réussit de modifié ce fichier(le code des filter)mais lorsque j'execute je trouve que le serveur web ne trouve pas ma premier servlet(menu servlet)

  12. #12
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 53
    Points : 38
    Points
    38
    Par défaut
    salut
    j'ai réussit de fair sa (le code qui calcule le temps d'une requétte )mais l'ors de l'affichage il m' affiche deux temps en milisec pour la premiere servlet
    par exemp menuservlet est ma premiere servlet im affiche pour elle 14ms et 146ms.

    pourquoi !

Discussions similaires

  1. Réponses: 6
    Dernier message: 23/03/2011, 16h11
  2. Détecter un clic sur une page html depuis le serveur?
    Par korntex5 dans le forum Delphi
    Réponses: 18
    Dernier message: 12/10/2006, 17h59
  3. [C#] Ouvrir une page HTML depuis un winform
    Par virgul dans le forum Windows Forms
    Réponses: 12
    Dernier message: 14/06/2006, 16h28
  4. Générer une page html depuis un fichier texte
    Par Thordax dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 11/04/2006, 08h29
  5. [Forms9i]Ouvrir une page HTML depuis forms
    Par benjamin50 dans le forum Forms
    Réponses: 13
    Dernier message: 17/03/2005, 16h54

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