求帮忙啊!各位大大,关于获得IP的问题!

_o小怪兽o_ 2012-07-26 02:40:14
我想在用户登录我的页面的同时就获取用户的IP 地址,并在数据库中保存下来。这个IP 地址是一个字符串,我采用UserIP下的一个属性值(ip)去建表存在数据库中。UserIP表与user表关联。现在是怎么获得这个真实的IP 地址很头痛,网络上的一些我看了下,如果用户设置了代理,那么获得的IP值就是代理端的。求各位大大,为小弟解决小这个问题。先谢过了!
...全文
53 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
brightyq 2012-07-26
  • 打赏
  • 举报
回复
获得请求的httpservletrequest 对象,传给这个方法。
_o小怪兽o_ 2012-07-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
Java code

public static String getClientIP(HttpServletRequest httpservletrequest) {
if (httpservletrequest == null)
return null;
String s = httpservletrequest.getHeader("X-Forwarded-For");
……
[/Quote]
这是一个方法,我怎么去调用呢?获得这个值。
屌丝哥 2012-07-26
  • 打赏
  • 举报
回复
通过两种方式获取用户IP,一个是getRemoteAddr(),一个是从Header中获取用户IP。

String clientIp = request.getHeader("x-forwarded-for");
if ((clientIp == null) || (clientIp.length() == 0) || ("unknown".equalsIgnoreCase(clientIp))) {
clientIp = request.getHeader("Proxy-Client-IP");
}
if ((clientIp == null) || (clientIp.length() == 0) || ("unknown".equalsIgnoreCase(clientIp))) {
clientIp = request.getHeader("WL-Proxy-Client-IP");
}
if ((clientIp == null) || (clientIp.length() == 0) || ("unknown".equalsIgnoreCase(clientIp))) {
clientIp = request.getRemoteAddr();
}
brightyq 2012-07-26
  • 打赏
  • 举报
回复
public static String getClientIP(HttpServletRequest httpservletrequest) {
if (httpservletrequest == null)
return null;
String s = httpservletrequest.getHeader("X-Forwarded-For");
if (s == null || s.length() == 0 || "unknown".equalsIgnoreCase(s))
s = httpservletrequest.getHeader("Proxy-Client-IP");
if (s == null || s.length() == 0 || "unknown".equalsIgnoreCase(s))
s = httpservletrequest.getHeader("WL-Proxy-Client-IP");
if (s == null || s.length() == 0 || "unknown".equalsIgnoreCase(s))
s = httpservletrequest.getHeader("HTTP_CLIENT_IP");
if (s == null || s.length() == 0 || "unknown".equalsIgnoreCase(s))
s = httpservletrequest.getHeader("HTTP_X_FORWARDED_FOR");
if (s == null || s.length() == 0 || "unknown".equalsIgnoreCase(s))
s = httpservletrequest.getRemoteAddr();
if ("127.0.0.1".equals(s) || "0:0:0:0:0:0:0:1".equals(s))
try {
s = InetAddress.getLocalHost().getHostAddress();
}
catch (UnknownHostException unknownhostexception) {
}
return s;
}

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧