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;
}
}
}
More Posts related to Java,
- Get the current timestamp in Java
- Java Stream with Multiple Filters Example
- Java SE JDBC with Prepared Statement Parameterized Select Example
- Fix: UnsupportedClassVersionError: Unsupported major.minor version 63.0
- [Fix] Java Exception with Lambda - Cannot invoke because object is null
- 7 deadly java.lang.OutOfMemoryError in Java Programming
- How to Calculate the SHA Hash Value of a File in Java
- Java JDBC Connection with Database using SSL (https) URL
- How to Add/Subtract Days to the Current Date in Java
- Create Nested Directories using Java Code
- Spring Boot: JDBCTemplate BatchUpdate Update Query Example
- What is CA FE BA BE 00 00 00 3D in Java Class Bytecode
- Save Java Object as JSON file using Jackson Library
- Adding Custom ASCII Text Banner in Spring Boot Application
- [Fix] Java: Type argument cannot be of primitive type generics
- List of New Features in Java 11 (JEPs)
- Java: How to Add two Maps with example
- Java JDBC Transition Management using PreparedStatement Examples
- Understanding and Handling NullPointerException in Java: Tips and Tricks for Effective Debugging
- Steps of working with Stored Procedures using JDBCTemplate Spring Boot
- Java 8 java.util.Function and BiFunction Examples
- The Motivation Behind Generics in Java Programming
- Get Current Local Date and Time using Java 8 DateTime API
- Java: Convert Char to ASCII
- Deep Dive: Why avoid java.util.Date and Calendar Classes
More Posts:
- Disable Control Scroll Zoom-in and Zoom-out in Notepad++ - NotepadPlusPlus
- Background task activation is spurious error - Windows 10, Office 2016, Office 365 - HowTos
- Fix: ModuleNotFoundError: No module named azure-core - Azure
- What is HTTP 500 Internal Server Error Code on web browsers - HowTos
- How to install curl on Alpine Linux - Linux
- Add X days from today in Command Line - HowTos
- Fix: >>> pip install - SyntaxError: invalid syntax - PIP
- Java TLSv1.3 protocol code example using SSLSocket - Java