依赖:
<dependency>
<groupId>eu.bitwalker</groupId>
<artifactId>UserAgentUtils</artifactId>
<version>1.21</version>
</dependency>
查看IP的工具类:
public class IPUtil {
public static String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("X-Real-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("http_client_ip");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip != null && ip.indexOf(",") != -1) {
ip = ip.substring(ip.lastIndexOf(",") + 1, ip.length()).trim();
}
return ip;
}
}
访问者信息:
@RequestMapping(value = "/user", method = RequestMethod.GET)
public void userController(HttpServletRequest request) {
UserAgent userAgent = UserAgent.parseUserAgentString(request.getHeader("user-agent"));
String clientType = userAgent.getOperatingSystem().getDeviceType().toString();
System.out.println("------> CLIENT TYPE: " + clientType);// Client type.
String os = userAgent.getOperatingSystem().getName();
System.out.println("------> OS TYPE: " + os); //OS type.
String ip = IPUtil.getIpAddr(request);
System.out.println("------> IP ADDR: " + ip); //IP address.
String browser = userAgent.getBrowser().toString();
System.out.println("------> BROWSER TYPE: " + browser);
}
测试:
一次Chrome,一次iPhone,一次黑莓(RIM系统自带的浏览器内核是Safari包装类型吗),结果如下:
------> CLIENT TYPE: COMPUTER
------> OS TYPE: Windows 10
------> IP ADDR: 0:0:0:0:0:0:0:1
------> BROWSER TYPE: CHROME9
------> CLIENT TYPE: MOBILE
------> OS TYPE: Mac OS X (iPhone)
------> IP ADDR: 192.168.1.101
------> BROWSER TYPE: MOBILE_SAFARI
------> CLIENT TYPE: MOBILE
------> OS TYPE: BlackBerry 7
------> IP ADDR: 192.168.1.107
------> BROWSER TYPE: MOBILE_SAFARI