资料已上传至git仓库
添加maven依赖
引入db库文件
ip换算城市工具类
/**
* ip换算城市工具类
*
* @author
*/
public class IpUtil {
private static DbSearcher dbSearcher;
public static void init(String path) {
try {
dbSearcher = new DbSearcher(new DbConfig(), path);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (DbMakerConfigException e) {
e.printStackTrace();
}
}
public static String getCityInfoByIp(String ip) throws Exception {
if(CheckUtil.isEmpty(dbSearcher)){
return "未知";
}
DataBlock dataBlock = dbSearcher.btreeSearch(ip);
String region = dataBlock.getRegion().substring(0, dataBlock.getRegion().lastIndexOf("|"));
String city = region.substring(region.lastIndexOf("|") + 1);
return city;
}
}
在配置类中进行如下配置
在配置文文件中,写上相应的参数:key-value
当应用启动时,该文件就会被加载,
具体使用:
获取ip方法也给下:
/**
* 获取IP 方法
*
* @param request 从请求对象中获取IP地址
*/
public static String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("X-Real-IP");
if (!CheckUtil.isEmpty(ip) && !"unknown".equalsIgnoreCase(ip)) {
return ip;
}
ip = request.getHeader("X-Forwarded-For");
if (!CheckUtil.isEmpty(ip) && !"unknown".equalsIgnoreCase(ip)) {
// 多次反向代理后会有多个IP值,第一个为真实IP。
int index = ip.indexOf(',');
if (index != -1) {
return ip.substring(0, index);
} else {
return ip;
}
} else {
return request.getRemoteAddr();
}
}