在项目中记录日志时一般需要记录客户端的IP地址,如何获取呢?下面是一个封装的方法:
/**
* 获取Ip地址
* @return
*/
protected String getIpAddr() {
HttpServletRequest request = ServletActionContext.getRequest();
String ip = request.getHeader("x-forwarded-for");
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.getRemoteAddr();
}
return ip;
}
另外一种:
String s = request.getRemoteAddr();
if (s.equals("127.0.0.1"))
s = InetAddress.getLocalHost().getHostAddress();
本文介绍了两种在项目中记录客户端IP地址的有效方法。第一种通过封装的方法依次尝试从请求头中获取IP地址;第二种直接使用request.getRemoteAddr()获取,并在特定情况下使用InetAddress.getLocalHost().getHostAddress()作为补充。
2387

被折叠的 条评论
为什么被折叠?



