Java根据HttpServletRequest请求获取服务器的IP地址

  以下总结了两种根据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地址。

原文地址:https://www.cnblogs.com/Big-Boss/p/9999361.html

时间: 2024-08-16 15:33:12

Java根据HttpServletRequest请求获取服务器的IP地址的相关文章

Java中使用HttpRequest获取用户真实IP地址

1 import javax.servlet.http.HttpServletRequest; 2 3 /** 4 * 自定义访问对象工具类 5 * 6 * 获取对象的IP地址等信息 7 * @author X-rapido 8 * 9 */ 10 public class CusAccessObjectUtil { 11 12 /** 13 * 获取用户真实IP地址,不使用request.getRemoteAddr();的原因是有可能用户使用了代理软件方式避免真实IP地址, 14 * 16 *

通过抓包获取服务器的IP地址

问题描述:一台服务器安装了winserver2003系统,经过漫长的加电启动,能进入到win2003的登录界面,提示ctrl+alt+del登录界面,但是发现键盘失灵了,无法键入ctrl+alt+del,更换键盘重启服务器之后也不管用!想通过网口远程登录,但是不记得网口的IP地址了! 问题分析:键盘失灵应该是主板上的USB模块坏了,这个短时间无法修复远程登录不知道IP地址,这个有就点可惜了,想想有没有解决办法呢? 解决问题:使用网线一头接Gb网口,另一头接笔记本网卡,如果使用IP扫描软件扫描IP

asp.net获取URL和IP地址

(转自:http://www.cnblogs.com/JuneZhang/archive/2010/11/26/1888863.html) HttpContext.Current.Request.Url.ToString() 并不可靠.如果当前URL为 http://localhost/search.aspx?user=http://csharp.xdowns.com&tag=%BC%BC%CA%F5 通过HttpContext.Current.Request.Url.ToString()获取到

多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了. 如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为 http://www.javapeixun.com.cn / 的URL时,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1 或 192.168.1.

Java获取请求客户端的真实IP地址

Java获取请求客户端的真实IP地址 Java,获取客户端的IP地址的方法: request.getRemoteAddr() 这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了; 如果使用了反向代理软件,将http://192.168.1.110:2046 的URL反向代理为 http://www.javapeixun.com.cn的URL时, 用 request.getRemoteAddr() 方法获取的IP地址是:127.0

Java里面获取当前服务器的IP地址

java中获取当前服务器地址主要使用到InetAddress这个类 public static void main(String[] args) { try { //用 getLocalHost() 方法创建的InetAddress的对象 InetAddress address = InetAddress.getLocalHost(); System.out.println(address.getHostName());//主机名 System.out.println(address.getCa

获取服务器访问者IP

从今年7月24号,没有玩游戏到现在不知不觉(还是一个来月啊,这记性啊,我还以为过了老长时间了呢!).真的像那个相对论中所说的那样啊,冬天的火堆,夏天的火炉,同样的时间,在第四维度是不一样的世界.好了,笔者利用15分钟的时间,探究一下怎么获取服务器访问者的IP地址. 方法一.java通过request获取 /** * 获取当前访问者IP地址 * @param request 请求 * @return IP地址 */ public static String getVisitIp(HttpServl

关于httpservletrequest的获取真实的ip

request方法客户端IP: request.getRemoteAddr() 输出:192.168.0.106 客户端主机名:request.getRemoteHost()输出:abc request.getHeader("Host") 输出:192.168.0.1:8080 Web服务器名字:request.getServerName()输出:192.168.0.1 服务器监听的端口:request.getServerPort()输出:8080 在JSP里,获取客户端的IP地址的方

使用Java技术获取客户端的IP地址

今天发文一篇较为简单,且文档满天飞的获取IP地址的java代码,可能很多小白们不一定能找到完整兼容的方法,故在此送给小白们一份干货. 此文也是为了接下来的时间里,我将会写一篇使用HTML5技术扫描PC二维码且在WAP端实现可上传图片或视频的文档,这里会运用到根据参数动态生成二维码和传输文件的技术,也会应用到ip及端口的东西. 下面是运用java代码判断当前客服端IP地址的逻辑: private String getInternetIp(HttpServletRequest request) {