Вот небольшой пример получения информации от HttpServletRequest
с использованием ServletRequestListener
.
Сначала добавьте прослушиватель в файл конфигурации web.xml. Этот файл должен находиться в папке WEB-INF.
<listener>
<description>RequestListener</description>
<listener-class>web.MyRequestListener</listener-class>
</listener>
В приведенной выше конфигурации ServletRequestListener
с именем MyRequestListener
находится в пакете web
.
Затем создайте MyRequestListener
в пакете web
следующим образом.
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");
}
}
Все, что делает код, это распечатывает атрибуты, параметры и информацию из заголовка HTTP. Если вам нужна дата для запроса, вы можете создать java.util.Date
при вводе requestInitialized()
.
Имейте в виду, что ServletRequestListener
requestInitialized()
будет вызываться каждый раз, когда HTTP-запрос от браузера (или бота) может быть лучше использовать инструмент, внешний по отношению к вашему приложению, для отслеживания использования. Если вы ищете внешние инструменты, вы можете рассмотреть Google Analytics или Urchin , если ваша сетевая конфигурация не позволяет вам использовать Google Analytics.