怎样得到访问者的IP地址 比如我建了一个自己的主页发布到网上,任何人都可以访问,那我怎么能知道这些访问者的ip地址和在什么时间访问的呢?我知道有个方法request.getLocalAddr(),能获取本地访问的地址,不知道这个方法用在网络上对不对。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 专门写个获取客户端IP地址的方法:/** * 获取访问者IP * * 在一般情况下使用Request.getRemoteAddr()即可,但是经过nginx等反向代理软件后,这个方法会失效。 * * 本方法先从Header中获取X-Real-IP,如果不存在再从X-Forwarded-For获得第一个IP(用,分割), * 如果还不存在则调用Request .getRemoteAddr()。 * * @param req 请求 * @return IP地址 */ public static String ip(HttpServletRequest req) { String ip = head(req,"X-Real-IP"); if (ip!=null && !"unknown".equalsIgnoreCase(ip)) { return ip; } ip = head(req,"X-Forwarded-For"); if (ip!=null && !"unknown".equalsIgnoreCase(ip)) { // 多次反向代理后会有多个IP值,第一个为真实IP。 int index = ip.indexOf(','); return (index!=-1)?ip.substring(0,index):ip; } else { return req.getRemoteAddr(); } } 楼上详细,一般Request.getRemoteAddr()就行咯 楼上详细,一般Request.getRemoteAddr()就行咯 楼上详细,一般Request.getRemoteAddr()就行咯 楼上详细,一般Request.getRemoteAddr()就行咯 public String getIpAddr(HttpServletRequest request) { 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; } 楼上详细,一般Request.getRemoteAddr()就行咯 在spring中如何返回404? hibernate字符转日期 请教java.util.enumeration和Iterator有什么不同? 请问web.xml文件的作用主要是什么,能给一个例子吗? CSDN高校俱乐部全新改版,欢迎你的加入! 关于数据类型变换的几个奇怪问题?大家来看看。 能否让HTML转换成JSP文件然后在TOMCAT 4.1.27上显示? 为什么在Netscape6下中文显示有问题?欢迎讨论,参与也送分。 为什么项目没办法被Tomcat识别. tomcat访问图片资源不存在 JSP什么水平才能找到工作啊 关于apache+tomcat负载均衡遇到的问题
* 获取访问者IP
*
* 在一般情况下使用Request.getRemoteAddr()即可,但是经过nginx等反向代理软件后,这个方法会失效。
*
* 本方法先从Header中获取X-Real-IP,如果不存在再从X-Forwarded-For获得第一个IP(用,分割),
* 如果还不存在则调用Request .getRemoteAddr()。
*
* @param req 请求
* @return IP地址
*/
public static String ip(HttpServletRequest req) {
String ip = head(req,"X-Real-IP");
if (ip!=null && !"unknown".equalsIgnoreCase(ip)) {
return ip;
}
ip = head(req,"X-Forwarded-For");
if (ip!=null && !"unknown".equalsIgnoreCase(ip)) {
// 多次反向代理后会有多个IP值,第一个为真实IP。
int index = ip.indexOf(',');
return (index!=-1)?ip.substring(0,index):ip;
} else {
return req.getRemoteAddr();
}
}
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;
}