常用代码
客户端信息
package com.egao.common.core.utils;
import eu.bitwalker.useragentutils.UserAgent;
import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
import java.net.UnknownHostException;
/**
* 获取客户端设备信息
* Crated by Addis
*/
public class UserAgentGetter {
private final UserAgent userAgent;
private final String userAgentString;
private final HttpServletRequest userRequest;
public UserAgentGetter(HttpServletRequest request) {
this.userRequest = request;
this.userAgentString = request.getHeader("User-Agent");
this.userAgent = UserAgent.parseUserAgentString(userAgentString);
}
/**
* 获取浏览器类型
*/
public String getBrowser() {
if (null == userAgent) return "Unknown";
return userAgent.getBrowser().getName();
}
/**
* 获取操作系统
*/
public String getOS() {
if (null == userAgent) return "Unknown";
return userAgent.getOperatingSystem().getName();
}
/**
* 获取设备型号
*/
public String getDevice() {
if (null == userAgentString) return "Unknown";
if (userAgentString.contains("Android")) {
String[] str = userAgentString.split("[()]+");
str = str[1].split("[;]");
String[] res = str[str.length - 1].split("Build/");
return res[0].trim();
} else if (userAgentString.contains("iPhone")) {
String[] str = userAgentString.split("[()]+");
String res = "iphone" + str[1].split("OS")[1].split("like")[0];
return res.trim();
} else if (userAgentString.contains("iPad")) {
return "iPad";
} else {
return getOS().trim();
}
}
/**
* 获取ip地址
*/
public String getIp() {
return getIp(userRequest);
}
/**
* 获取ip地址
*/
public static String getIp(HttpServletRequest request) {
String ip = null;
try {
ip = request.getHeader("x-forwarded-for");
if (isBlankIp(ip)) ip = request.getHeader("Proxy-Client-IP");
if (isBlankIp(ip)) ip = request.getHeader("WL-Proxy-Client-IP");
if (isBlankIp(ip)) ip = request.getHeader("HTTP_CLIENT_IP");
if (isBlankIp(ip)) ip = request.getHeader("HTTP_X_FORWARDED_FOR");
if (isBlankIp(ip)) ip = request.getRemoteAddr();
// 多个ip获取第一个
if (!isBlankIp(ip) && ip.length() > 15) ip = ip.split(",")[0];
} catch (Exception e) {
e.printStackTrace();
}
if ("0:0:0:0:0:0:0:1".equals(ip)) {
try {
ip = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
return ip;
}
private static boolean isBlankIp(String ip) {
return ip == null || ip.trim().isEmpty() || "unknown".equalsIgnoreCase(ip);
}
}
import java.net.InetAddress;
import java.net.NetworkInterface;
// ip地址
public static void ip() throws Exception {
InetAddress ia = null;
try {
ia = ia.getLocalHost();
String localname = ia.getHostName();
String localip = ia.getHostAddress();
System.out.println("本机名称是:" + localname);
System.out.println("本机的ip是 :" + localip);
} catch (Exception e) {
e.printStackTrace();
}
InetAddress ia1 = InetAddress.getLocalHost();// 获取本地IP对象
System.out.println("本机的MAC是 :" + getMACAddress(ia1));
}
// 获取MAC地址的方法
private static String getMACAddress(InetAddress ia) throws Exception {
// 获得网络接口对象(即网卡),并得到mac地址,mac地址存在于一个byte数组中。
byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress();
// 下面代码是把mac地址拼装成String
StringBuffer sb = new StringBuffer();
for (int i = 0; i < mac.length; i++) {
if (i != 0) {
sb.append("-");
}
// mac[i] & 0xFF 是为了把byte转化为正整数
String s = Integer.toHexString(mac[i] & 0xFF);
// System.out.println("--------------");
// System.err.println(s);
sb.append(s.length() == 1 ? 0 + s : s);
}
// 把字符串所有小写字母改为大写成为正规的mac地址并返回
return sb.toString().toUpperCase();
}