Программа Java, для мониторинга сайта, который я сделал с использованием J2EE - PullRequest
0 голосов
/ 21 июня 2009

Я сделал свой проект в J2EE ..

Я хотел бы отследить, кто все посещал мой веб-сайт, с какой-то определенной их информацией (например, о времени их посещения, IP-адресе и т. Д.). Как я могу сделать это с помощью Java-программы ,,

Я могу хранить информацию в базе данных. так что мне нужна логика относительно того, как я могу получить информацию о человеке, который посетил сайт. Tomcat Server ,, и я использую jsp + сервлеты ..

Спасибо ..

Ответы [ 4 ]

3 голосов
/ 21 июня 2009

AWStats - это то, что вы действительно должны учитывать. Запустите его против ваших журналов доступа. Я понимаю, что вы хотите использовать приложение Java, но вы действительно должны рассмотреть AWStats, потому что это зрелый продукт. Потребуется ДОЛГОЕ время для репликации в Java того, что уже делает AWStats.

0 голосов
/ 21 июня 2009

Вот небольшой пример получения информации от 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.

0 голосов
/ 21 июня 2009

Мы также использовали AWStats на моей предыдущей работе. Менеджмент и клиенты, похоже, остались довольны.

Полагаю, что когда вы сказали , что я сделал свой проект в J2EE , вы имеете в виду Enterprise Application, работающий на сервере J2EE, например Glassfish, JBoss, Weblogic, Geronimo и т. Д.

Если вам не нужно сложное решение, вы можете воспользоваться настройкой сервлет или valve в Tomcat (которая обычно встроена в большинство серверов J2EE).

0 голосов
/ 21 июня 2009

Ознакомьтесь с API ServletRequest . В частности, посмотрите на getRemoteAddr (), удаленный IP-адрес вашего клиента, getRemoteHost () и getRemotePort (). Надеемся, что большинство ваших клиентов не будут использовать прокси, или вы получите информацию о прокси.

Другой способ - установить уникальный идентификационный файл cookie для каждого клиента, а затем каждый последующий запрос будет содержать этот файл cookie. Это, вероятно, лучший подход, чем отслеживание IP-адресов. Вот учебник по обработке файлов cookie в сервлетах.

Инструменты анализа на уровне веб-сервера - еще один подход, согласно отличному предложению altCognito.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...