Wie kann ich feststellen, mit welcher IP-Adresse meine Website aufgerufen wurde? [Duplikat]

8

Ich habe eine Webanwendung und dazu möchte ich die IP-Adresse der Kunden erfassen, die auf meine Website zugreifen, damit ich weiß, welche Region am meisten auf die Anwendung zugreift. Ich verwende Java EE in meiner Anwendung.

Wahrscheinlich gibt es eine Lösung, wenn wir über Header sprechen und wenn request vom Endbenutzer gesendet wird.

    
Prateek 24.08.2012, 10:35
quelle

3 Antworten

15

Verwenden Sie die Methode getRemoteAddr () von der Schnittstelle ServletRequest oder Methoden getHeaders () Formularschnittstelle HttpServletRequest :

%Vor%

Es gibt eine Vorsichtsmaßnahme für die Verwendung der Methode getRemoteAddr :

Sicher können Sie die Methode verwenden und im Allgemeinen erhalten Sie IP des Clients. Die Methode ist jedoch nutzlos, wenn sich ein Benutzer hinter einem Proxy befindet. In diesem Fall erhalten Sie die IP-Adresse des Proxy-Servers und nicht den Client. Der Proxy kann jedoch die IP-Adresse des anfragenden Clients in einem speziellen Header HTTP enthalten. So rufen Sie die Real-Client-IP-Aufrufmethode getHeader("X-Forwarded-For") auf.

Eine Beispielverwendung in JSP:

Verwenden Sie den festgelegten Wert der IP-Adresse in der Sitzung mithilfe von JSTL :

%Vor%

Und dann erhalten Sie diesen Wert von der Sitzung an einem geeigneten Ort.

In JSP können Sie <c:out value="${sessionScope.userIp}" /> oder in Servlet als session.getAttribute('userIp');

verwenden

Bitte lesen Sie Dokumente :

  

java.lang.String getRemoteAddr () gibt die Internetprotokolladresse (IP) des Clients oder des letzten Proxys zurück, die die Anforderung gesendet hat.

    
kapand 24.08.2012, 10:51
quelle
1

Neben den oben genannten Antworten (von Andrey und Stephen) verwenden Sie auch% analytics tool. Es wird Ihnen ein größeres Bild des Verkehrs geben, der zu Ihrer Web site kommt. Ein Beispiel hierfür ist Google Analytics .

    
pratikabu 24.08.2012 11:24
quelle
0

Das Anfrageobjekt wird als Java-Argument an die von Ihrer JSP generierte Servlet-Methode übergeben. Der Name des Arguments lautet ... warte auf ... request .

Sie sollten also in der Lage sein, in einem in Ihre JSP eingebetteten Scriptlet darauf zu verweisen; z.B.

%Vor%

Es ist strittig, ob Sie so etwas in einer JSP machen sollten. Es wird allgemein als "Best Practice" akzeptiert, dass JSPs nur zur Formatierung der Ausgabe verwendet werden sollten. Die Geschäftslogik einer Webanwendung sollte sich in einem Controller-Servlet befinden, das schließlich an das JSP-Servlet weiterleitet, um den HTML-Code (oder was auch immer) zu generieren.

Wenn Sie Geschäftslogik in eine JSP integrieren, sind Scriptlets in der Regel schwer zu pflegen ... wenn Sie jedoch nur die IP-Adresse anzeigen, sollte das kein sein Besorgnis, Sorge. (Der aus technischer Sicht bevorzugte Ansatz besteht darin, Tags und eine JSP-Ausdruckssprache zu verwenden.)

Schließlich gibt es keine Garantie, dass die von getRemoteAddr() zurückgegebene IP-Adresse die tatsächliche Client-IP-Adresse ist. Es könnte die Adresse eines Stellvertreters oder sogar eine komplette Fabrikation sein.

    
Stephen C 24.08.2012 11:21
quelle

Tags und Links