程序运行效果图,如果这种有你需要的信息,不妨随着小编一起看下去吧!
(1)接口
在浏览器上访问 localhost:8089/test/cs
@RequestMapping("/cs")
public String cs(HttpServletRequest request) {
Map<String, String> map = CommenUtil.getClientInfo(request);
System.out.println("请求地址:-----"+map.get("requestAddress"));
System.out.println("请求的操作系统信息----"+map.get("operationSystem"));
System.out.println("获取浏览器信息----"+map.get("browerInfo"));
System.out.println("获取ip信息----"+map.get("ip"));
return "ok1";
}
(2)CommenUtil
/**
* 获取用户登录的一些信息
*
* @param
* @return
*/
public static Map<String, String> getClientInfo(HttpServletRequest request) {
Map<String, String> map = new HashMap<>();
String browserInfo = "";
String ip = CommenUtil.getIpAddr(request);
UserAgent userAgent = UserAgent.parseUserAgentString(request.getHeader("User-Agent"));
Browser browser = userAgent.getBrowser();
String requestAddress = request.getHeader("host");
//获取浏览器版本号
Version version = browser.getVersion(request.getHeader("User-Agent"));
//微信小程序登录可能没有这个版本信息
if (version != null) {
browserInfo = browser.getName() + "/" + version.getVersion();
} else {
browserInfo = browser.getName();
}
OperatingSystem operatingSystem = userAgent.getOperatingSystem();
String name = operatingSystem.getName();
map.put("ip", ip);
map.put("operationSystem", name);
map.put("requestAddress", requestAddress);
map.put("browerInfo", browserInfo);
return map;
}
(3)获取当前登录的IP地址
/**
* 获取当前客户端登录的真实ip地址
*
* @param request
* @return
*/
public static String getIpAddr(HttpServletRequest request) {
String ipAddress = request.getHeader("x-forwarded-for");
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("WL-Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getRemoteAddr();
if (Constant.LOCAL_ADDRESS.equals(ipAddress) || Constant.LOCAL_IP.equals(ipAddress)) {
//根据网卡取本机配置的IP
InetAddress inet = null;
try {
inet = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
ipAddress = inet.getHostAddress();
}
}
//对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割 //"***.***.***.***".length() = 15
if (ipAddress != null && ipAddress.length() > 15) {
if (ipAddress.indexOf(",") > 0) {
ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
}
}
return ipAddress;
}
整篇文章就到这里啦,希望能够帮助到有需要的你 ,一起加油