In order to get the IP address of a Client you can make use of getRemoteAddr method from the HttpServletRequest class from javax.servlet.http package,
The tricky part here is there could be multiple headers the client might be behind the proxy servers or load balancers,
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
/**
* Java Program to get Client
* IP address
*
* Author: Code2care.org
* Date: 03-Apr-2022
* Version: 1.0
*
*/
public class JavaExample {
public static void main(String[] args) throws UnknownHostException {
System.out.println(getRemoteClientIPAddress());
}
private static String getRemoteClientIPAddress(HttpServletRequest request) {
List<String> proxyHeadersList = new ArrayList();
//There could be much more
proxyHeadersList.add("X-Forwarded-FOR");
proxyHeadersList.add("WL-Proxy-Client-IP");
proxyHeadersList.add("Proxy-Client-IP");
proxyHeadersList.add("HTTP_X_FORWARDED");
String remoteIpAddress;
for(String proxyHeader: proxyHeadersList) {
remoteIpAddress = request.getHeader("X-FORWARDED-FOR");
if (isValidIP(remoteIpAddress)) {
return remoteIpAddress;
}
}
return request.getRemoteAddr();
}
public static boolean isValidIP(String remoteIpAddress) {
if (remoteIpAddress == null || "".equals(remoteIpAddress)) {
return false;
} else {
return true;
}
}
}
- Create a Zip file using Java Code programmatically
- Eclipse : A java Runtime Environment (JRE) or Java Development kit (JDK) must be available
- How to Sort a LinkedList in Java
- Loading class com.mysql.jdbc.Driver. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver
- How to declare and initialize Array in Java Programming
- [Fix] java: integer number too large compilation error
- Java JDBC Connection with MySQL Driver in VS Code + Troubleshooting
- Reading .xls and .xlsx Excel file using Apache POI Java Library
- IntelliJ: Error: Could not find or load main class, java.lang.ClassNotFoundException
- How to get Client IP address using Java Code Example
- Truncate table using Java JDBC Example
- Struts 2 : There is no Action mapped for namespace [/] and action name [form] associated with context path [/proj]
- How to get file path in Idea IntelliJ IDE
- Java Generics explained with simple definition and examples
- Java SE 8 Update 301 available with various bug fixes and security improvements
- Java: Collect Stream as ArrayList or LinkedList
- Java JDBC Connection with PostgreSQL Driver Example
- How to check if Java main thread is alive
- How to fix Java nio NoSuchFileException wile reading a file
- Java 8+ get Day of the Week Examples with LocalDateTime, DateTime, ZonalDateTime and Instant classes
- Ways to Convert Integer or int to Long in Java
- [Java] How to throws Exception using Functional Interface and Lambda code
- [Fix] Spring Boot: mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
- Java: The value of the local variable string is not used
- Java JDBC: Insert Java 8 LocalDate and Time using PreparedStatement
- [Program] How to read three different values using Scanner in Java - Java
- Java SE 8 Update 301 available with various bug fixes and security improvements - Java
- This class should be public (android.support.v7.internal.widget.ActionBarView.HomeView) Lint Error - Android
- Path of homebrew (brew) installation in macOS Big Sur - MacOS
- Parsing CSV file using Java code example (Comma Separated File) - Java
- Java 8 Format Date and Time Examples - Java
- The Zsh Shell - Mac Tutorial - MacOS
- How to Reset Eclipse Theme to Classic - Eclipse