以下总结了两种根据HttpServletRequest请求获取发出请求浏览器客户端所在服务器的IP地址方法:

代码:

import javax.servlet.http.HttpServletRequest;

/**
* 根据HttpServletRequest请求获取发出请求浏览器客户端所在服务器的IP地址
* @author 【】
*
*/
public class IPUtil {
/*
* 第一种方法
*/
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;
} /*
* 第二种方法
*/
public String getIP(HttpServletRequest request) {
String remoteAddr = request.getRemoteAddr();
String forwarded = request.getHeader("X-Forwarded-For");
String realIp = request.getHeader("X-Real-IP");
String ip = null;
if (realIp == null) {
if (forwarded == null) {
ip = remoteAddr;
} else {
ip = remoteAddr + "/" + forwarded.split(",")[0];
}
} else {
if (realIp.equals(forwarded)) {
ip = realIp;
} else {
if(forwarded != null){
forwarded = forwarded.split(",")[0];
}
ip = realIp + "/" + forwarded;
}
}
return ip;
}
}

  注:如果在本机访问服务时(服务器和客户端都在同一台电脑上,例如用localhost访问的时候就会出现),获取的IP值会为“0:0:0:0:0:0:0:1”,这是IPV6的IP。如果本机通过localhost、127.0.0.1和本机真实地址访问时获取到的ip也有区别,把localhost换成127.0.0.1或本机真实地址就变成了IPV4,即所需的IP地址。

最新文章

  1. 两个有意思的模式在ECMAScript中的实现
  2. Jade之Doctype
  3. Chrome浏览器插件
  4. JAVA之关于super的用法
  5. 在Mac OS X上安装Ionic
  6. 实验教学管理系统 c语言程序代写源码下载
  7. JSP 表单request内容
  8. Xshell4连接Linux后 win快捷键锁屏
  9. wpf 数据绑定的4种形式
  10. Yii2.0 多条件搜索 带分页
  11. Java——IO系统概览
  12. objectarx 读取外部DWG图到当前图形
  13. webpack打包vue项目,资源路径如何从绝对路径改为相对路径?css中的图片资源如何修改配置?
  14. 【jQuery】(4)---jQuery常用事件
  15. HDU 4612 Warm up (边双连通分量+缩点+树的直径)
  16. 【分块】教主的魔法 @洛谷P2801/upcexam3138
  17. 自己定义ViewGroup实现仿淘宝的商品详情页
  18. DataTable导出为word,excel,html,csv,pdf,.txt
  19. Maven知识点积累一
  20. SAS DATA ENCODING 解决odbc乱码问题

热门文章

  1. Zend Studio快捷键汇总
  2. elasticsearch 权威指南排序阅读笔记(六)
  3. 运行npm run watch时报:events.js:182 throw er; // Unhandled 'error' event
  4. 洛谷 P3227 BZOJ 3144 [HNOI2013]切糕
  5. MySQL:浅析 Impossible WHERE noticed after reading const tables
  6. Spring 学习二-----AOP的原理与简单实践
  7. 关联查询之map的延伸使用方法
  8. 优雅的App全然退出方案(没有不论什么内存泄漏隐患)
  9. luogu3811 【模板】乘法逆元
  10. c27---typedef