Java根据HttpServletRequest请求获取服务器的IP地址
2024-10-19 22:22:14
以下总结了两种根据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地址。
最新文章
- 两个有意思的模式在ECMAScript中的实现
- Jade之Doctype
- Chrome浏览器插件
- JAVA之关于super的用法
- 在Mac OS X上安装Ionic
- 实验教学管理系统 c语言程序代写源码下载
- JSP 表单request内容
- Xshell4连接Linux后 win快捷键锁屏
- wpf 数据绑定的4种形式
- Yii2.0 多条件搜索 带分页
- Java——IO系统概览
- objectarx 读取外部DWG图到当前图形
- webpack打包vue项目,资源路径如何从绝对路径改为相对路径?css中的图片资源如何修改配置?
- 【jQuery】(4)---jQuery常用事件
- HDU 4612 Warm up (边双连通分量+缩点+树的直径)
- 【分块】教主的魔法 @洛谷P2801/upcexam3138
- 自己定义ViewGroup实现仿淘宝的商品详情页
- DataTable导出为word,excel,html,csv,pdf,.txt
- Maven知识点积累一
- SAS DATA ENCODING 解决odbc乱码问题
热门文章
- Zend Studio快捷键汇总
- elasticsearch 权威指南排序阅读笔记(六)
- 运行npm run watch时报:events.js:182 throw er; // Unhandled 'error' event
- 洛谷 P3227 BZOJ 3144 [HNOI2013]切糕
- MySQL:浅析 Impossible WHERE noticed after reading const tables
- Spring 学习二-----AOP的原理与简单实践
- 关联查询之map的延伸使用方法
- 优雅的App全然退出方案(没有不论什么内存泄漏隐患)
- luogu3811 【模板】乘法逆元
- c27---typedef