现在手头开发一个网站,有这么一个功能,就是根据访问者的IP自动显示访问者所在的区域;
现在遇到了一问题,我得到客户端IP的代码如下:public String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)
|| "null".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)
|| "null".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)
|| "null".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
该代码得到的结果如下:
1.如果应用发布到局域网,在局域网内访问,得到的是我局域网的IP,如: 192.168.0.2
2.如果我将应用发布到独立IP的外网服务器上面,在任何地方访问,得到的IP总是 192.168.198.1,这一类局域网的IP段我现在就是想在第二种情况下能够得到访问者的外网ip,请问各位有什么高招?
现在遇到了一问题,我得到客户端IP的代码如下:public String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)
|| "null".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)
|| "null".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)
|| "null".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
该代码得到的结果如下:
1.如果应用发布到局域网,在局域网内访问,得到的是我局域网的IP,如: 192.168.0.2
2.如果我将应用发布到独立IP的外网服务器上面,在任何地方访问,得到的IP总是 192.168.198.1,这一类局域网的IP段我现在就是想在第二种情况下能够得到访问者的外网ip,请问各位有什么高招?
解决方案 »
- java 方法事件监听
- 关于webservice问题!在线求助!
- java客户端如何得到window域用户的信息和域服务器的名称
- 紧急求助 怎么用JSP编写程序 把报表导入 Excel 表进行打印
- java可以执行javascript的某个函数吗.
- 请问一个<%@ include file="relativeFragment.jsp" %>的问题
- 在Servlet中对一个session设置了属性,如何在别的html中访问这个session呢?
- JSP简单问题!!!!!!! 急??????????在线等待。。。。。。。
- 请问在jsp里能调用COM组件么?
- 如何把action层的信息保存到dao层?
- Struts 上传文件问题
- 大兔子散分咯!
http://www.diybl.com/course/3_program/java/javajs/20090415/165031.html仔细看下 你应该可以找到答案的