Voici un petit exemple d'obtention d'informations à partir d'un HttpServletRequest
en utilisant un ServletRequestListener
.
Commencez par ajouter l'écouteur au fichier de configuration web.xml. Ce fichier doit se trouver dans le dossier WEB-INF.
<listener>
<description>RequestListener</description>
<listener-class>web.MyRequestListener</listener-class>
</listener>
Dans la configuration ci-dessus le nom ServletRequestListener
MyRequestListener
est situé dans le package web
.
Ensuite, créez MyRequestListener
dans le package web
comme suit.
package web;
import javax.servlet.*;
public class MyRequestListener implements ServletRequestListener {
public void requestInitialized(ServletRequestEvent event) {
HttpServletRequest request = (HttpServletRequest)event.getServletRequest();
System.out.println("request initialized");
System.out.println("Request Remote Addr = " + request.getRemoteAddr());
System.out.println("Request Remote Host = " + request.getRemoteHost());
System.out.println("Request Remote Port = " + request.getRemotePort());
java.util.Enumeration e = request.getAttributeNames();
while(e.hasMoreElements()) {
String attName = (String)e.nextElement();
Object val = request.getAttribute(attName);
System.out.println("Request Att (" + attName + ") = " + val.toString());
}
e = request.getParameterNames();
while(e.hasMoreElements()) {
String paramName = (String)e.nextElement();
Object val = request.getParameter(paramName);
System.out.println("Request Param (" + paramName + ") = " + val.toString());
}
e = request.getHeaderNames();
while(e.hasMoreElements()) {
String headerName = (String)e.nextElement();
Object val = request.getHeader(headerName);
System.out.println("Header (" + headerName + ") = " + val.toString());
}
}
public void requestDestroyed(ServletRequestEvent event) {
System.out.println("request destroyed");
}
}
Tout le code ne consiste pas à imprimer les attributs, les paramètres et les informations de l'en-tête HTTP. Si vous avez besoin de la date de la demande, vous pouvez créer un java.util.Date
lorsque requestInitialized()
est entré.Gardez à l'esprit qu'un ServletRequestListener
requestInitialized()
sera appelé chaque fois qu'il y aura une requête HTTP d'un navigateur (ou bot) donc il peut être préférable d'utiliser un outil externe à votre application pour suivre l'utilisation. Si vous recherchez des outils externes, vous pouvez envisager Google Analytics ou Urchin si votre configuration réseau ne vous permet pas d'utiliser Google Analytics. Peut-on supposer que vous utilisez des servlets?
Quel serveur Java EE utilisez-vous? Glassfish? JBoss? WebSphere? WebLogic? –