ClientInfo 客户端信息
大约 3 分钟
ClientInfoUtils
是一个用于获取客户端信息的工具类,包括客户端的 IP 地址、User-Agent、浏览器名称、浏览器版本和操作系统等信息。以下是对每个 public
方法的详细介绍和使用示例。
getClientIp(HttpServletRequest request)
功能:获取客户端的 IP 地址。
参数:
HttpServletRequest request
:HTTP 请求对象。
返回值:
String
:客户端的 IP 地址,默认为空字符串""
。
使用示例:
import jakarta.servlet.http.HttpServletRequest;
public class Example {
public void exampleMethod(HttpServletRequest request) {
String clientIp = ClientInfoUtils.getClientIp(request);
System.out.println("Client IP: " + clientIp);
}
}
getClientIp(RequestHeaderProvider requestHeaderProvider)
getClientIp(RequestHeaderProvider requestHeaderProvider)
方法用于获取客户端的 IP 地址,适用于网关场景。该方法依赖于 RequestHeaderProvider
接口的实现类来获取请求头信息。以下是该方法的详细说明和使用示例。
功能:获取客户端的 IP 地址,适用于网关场景。
参数:
RequestHeaderProvider requestHeaderProvider
:请求头提供者,使用RequestHeaderProvider
的实现类即可。
返回值:
String
:客户端的 IP 地址。
使用场景:
- 适用于需要从代理服务器获取客户端真实 IP 地址的网关服务。
- 适用于需要处理多种请求类型(如 HTTP 请求、WebSocket 请求等)的场景。
使用 HttpServletRequestHeaderAdapter
场景:从标准的 HTTP 请求中获取客户端 IP 地址。
代码示例:
import jakarta.servlet.http.HttpServletRequest;
import com.simperfect.commons.util.net.ClientInfoUtils;
import com.simperfect.commons.util.net.client.HttpServletRequestHeaderAdapter;
public class Example {
public void exampleMethod(HttpServletRequest request) {
// 创建 HttpServletRequestHeaderAdapter 实例
HttpServletRequestHeaderAdapter requestHeaderProvider = HttpServletRequestHeaderAdapter.of(request);
// 获取客户端 IP 地址
String clientIp = ClientInfoUtils.getClientIp(requestHeaderProvider);
System.out.println("Client IP: " + clientIp);
}
}
使用 ServerHttpRequestHeaderAdapter
场景:从 Spring WebFlux 的 ServerHttpRequest
中获取客户端 IP 地址。
代码示例:
import org.springframework.http.server.reactive.ServerHttpRequest;
import com.simperfect.commons.util.net.ClientInfoUtils;
import com.simperfect.commons.util.net.client.ServerHttpRequestHeaderAdapter;
public class Example {
public void exampleMethod(ServerHttpRequest request) {
// 创建 ServerHttpRequestHeaderAdapter 实例
ServerHttpRequestHeaderAdapter requestHeaderProvider = ServerHttpRequestHeaderAdapter.of(request);
// 获取客户端 IP 地址
String clientIp = ClientInfoUtils.getClientIp(requestHeaderProvider);
System.out.println("Client IP: " + clientIp);
}
}
使用 WebSocketSessionHeaderAdapter
场景:从 Spring WebSocket 的 WebSocketSession
中获取客户端 IP 地址。
代码示例:
import org.springframework.web.socket.WebSocketSession;
import com.simperfect.commons.util.net.ClientInfoUtils;
import com.simperfect.commons.util.net.client.WebSocketSessionHeaderAdapter;
public class Example {
public void exampleMethod(WebSocketSession session) {
// 创建 WebSocketSessionHeaderAdapter 实例
WebSocketSessionHeaderAdapter requestHeaderProvider = WebSocketSessionHeaderAdapter.of(session);
// 获取客户端 IP 地址
String clientIp = ClientInfoUtils.getClientIp(requestHeaderProvider);
System.out.println("Client IP: " + clientIp);
}
}
getUserAgent(HttpServletRequest request)
功能:获取客户端的 User-Agent 字符串。
参数:
HttpServletRequest request
:HTTP 请求对象。
返回值:
String
:User-Agent 字符串。
使用示例:
import jakarta.servlet.http.HttpServletRequest;
public class Example {
public void exampleMethod(HttpServletRequest request) {
String userAgent = ClientInfoUtils.getUserAgent(request);
System.out.println("User-Agent: " + userAgent);
}
}
getBrowserName(HttpServletRequest request)
功能:获取客户端浏览器的名称。
参数:
HttpServletRequest request
:HTTP 请求对象。
返回值:
String
:浏览器名称,默认为空字符串""
。
使用示例:
import jakarta.servlet.http.HttpServletRequest;
public class Example {
public void exampleMethod(HttpServletRequest request) {
String browserName = ClientInfoUtils.getBrowserName(request);
System.out.println("Browser Name: " + browserName);
}
}
getBrowserVersion(HttpServletRequest request)
功能:获取客户端浏览器的版本号。
参数:
HttpServletRequest request
:HTTP 请求对象。
返回值:
String
:浏览器版本号,默认为空字符串""
。
使用示例:
import jakarta.servlet.http.HttpServletRequest;
public class Example {
public void exampleMethod(HttpServletRequest request) {
String browserVersion = ClientInfoUtils.getBrowserVersion(request);
System.out.println("Browser Version: " + browserVersion);
}
}
getPlatform(HttpServletRequest request)
功能:获取客户端的操作系统名称。
参数:
HttpServletRequest request
:HTTP 请求对象。
返回值:
String
:操作系统名称,默认为空字符串""
。
使用示例:
import jakarta.servlet.http.HttpServletRequest;
public class Example {
public void exampleMethod(HttpServletRequest request) {
String platform = ClientInfoUtils.getPlatform(request);
System.out.println("Platform: " + platform);
}
}
getBrowserInfoExcludeOS(HttpServletRequest request)
功能:获取客户端浏览器的信息,不包含操作系统信息。
参数:
HttpServletRequest request
:HTTP 请求对象。
返回值:
BrowserInfo
:包含浏览器名称和版本的对象。
使用示例:
import jakarta.servlet.http.HttpServletRequest;
import com.simperfect.commons.util.net.BrowserInfo;
public class Example {
public void exampleMethod(HttpServletRequest request) {
BrowserInfo browserInfo = ClientInfoUtils.getBrowserInfoExcludeOS(request);
System.out.println("Browser Name: " + browserInfo.getName());
System.out.println("Browser Version: " + browserInfo.getVersion());
}
}
getBrowserInfo(HttpServletRequest request, boolean os)
功能:获取客户端浏览器的信息,可以选择是否包含操作系统信息。
参数:
HttpServletRequest request
:HTTP 请求对象。boolean os
:是否包含操作系统信息。
返回值:
BrowserInfo
:包含浏览器名称、版本和操作系统名称的对象。
使用示例:
import jakarta.servlet.http.HttpServletRequest;
import com.simperfect.commons.util.net.BrowserInfo;
public class Example {
public void exampleMethod(HttpServletRequest request) {
BrowserInfo browserInfo = ClientInfoUtils.getBrowserInfo(request, true);
System.out.println("Browser Name: " + browserInfo.getName());
System.out.println("Browser Version: " + browserInfo.getVersion());
System.out.println("Platform: " + browserInfo.getOs());
}
}