
Envoyé par
c_nvy
Je viens de me rendre compte que j'avais complètement oublié de répondre à
mattheox.
Pour afficher la durée dans la jsp, je pense que le plus simple est d'utiliser le filtre simplement pour stocker la datetime de début dans le scope request. Ensuite, dans la jsp, il suffit de la récupérer, faire le calcul de la durée et l'afficher.
t'as raison, j'y avais pas pensé
et pour aller plus loin, je mettrai ce code :
dans la jsp, il suffit de la récupérer, faire le calcul de la durée et l'afficher.
dans un taglib lié avec le filter :-)
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
| public class TimeTag extends TagSupport {
public static final String START_PARAM = "Time.START";
public int doStartTag() throws JspException {
long end = new Date().getTime();
long start = 0;
try {
Date startParam = (Date) this.pageContext.getRequest().getAttribute(START_PARAM);
if (startParam != null) {
start = startParam.getTime();
this.pageContext.getOut().print(end - start);
} else {
// au choix...
this.pageContext.getOut().print("erreur");
}
} catch (ClassCastException e) {
// au choix
// => prévenir l'utilisateur : throw new JspException(e);
// => ne pas prévenir l'utilisateur : ne rien faire.
} catch (IOException e) {
throw new JspException(e);
}
return SKIP_BODY;
}
} |
et
1 2 3 4 5 6 7 8 9 10 11 12
| public class TimeFilter implements Filter
{
public void init(FilterConfig arg0) throws ServletException { }
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException
{
HttpServletRequest request = (HttpServletRequest) req;
req.setAttribute(START_PARAM, new Date());
chain.doFilter(req,resp) ;
}
public void destroy() { }
} |
et dans la jsp :
Partager