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![]()
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![]()
tu peux utiliser le filter...
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
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); } }
et hop dans ta jsp :
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>
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
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 :Envoyé par mitoubra
tu n'as rien à coder de spécifique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <url-pattern>/*</url-pattern>
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... ;-)
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
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 :
la servlet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 public final class TimerFilter implements Filter { }
ce sont 2 objets java qui ne doivent pas être liés par la programmation : ils doivent compiler l'un sans l'autre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public class MenuServlet extends HTTPServlet { ..... }
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
Partager