SSM框架如何获取用户的IP地址

贼皮滴小仙女 2018-05-11 10:19:14

用户填入信息,随信息和IP地址一起填入数据库
该怎么写啊 求告知 先谢谢各位了
...全文
814 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
maradona1984 2018-05-11
  • 打赏
  • 举报
回复
跟框架无关,话说这东西随便百度就能拿到,这个算比较全的了,就算有反向代理什么的都能获取ip

	/**
	 * 获取ip地址
	 * 
	 * @param request
	 * @return
	 */
	public static String getIpAddress(HttpServletRequest request) {
		// 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址
		String ip = request.getHeader("X-Forwarded-For");
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			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.getHeader("HTTP_CLIENT_IP");
			}
			if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
				ip = request.getHeader("HTTP_X_FORWARDED_FOR");
			}
			if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
				ip = request.getRemoteAddr();
			}
		} else if (ip.length() > 15) {
			String[] ips = ip.split(",");
			for (int index = 0; index < ips.length; index++) {
				String strIp = (String) ips[index];
				if (!("unknown".equalsIgnoreCase(strIp))) {
					ip = strIp;
					break;
				}
			}
		}
		return ip;
	}
贼皮滴小仙女 2018-05-11
  • 打赏
  • 举报
回复
引用 3 楼 maradona1984 的回复:
[quote=引用 2 楼 qq_38413523 的回复:] [quote=引用 1 楼 maradona1984 的回复:] 跟框架无关,话说这东西随便百度就能拿到,这个算比较全的了,就算有反向代理什么的都能获取ip

	/**
	 * 获取ip地址
	 * 
	 * @param request
	 * @return
	 */
	public static String getIpAddress(HttpServletRequest request) {
		// 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址
		String ip = request.getHeader("X-Forwarded-For");
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			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.getHeader("HTTP_CLIENT_IP");
			}
			if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
				ip = request.getHeader("HTTP_X_FORWARDED_FOR");
			}
			if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
				ip = request.getRemoteAddr();
			}
		} else if (ip.length() > 15) {
			String[] ips = ip.split(",");
			for (int index = 0; index < ips.length; index++) {
				String strIp = (String) ips[index];
				if (!("unknown".equalsIgnoreCase(strIp))) {
					ip = strIp;
					break;
				}
			}
		}
		return ip;
	}
然后我写了之后获取到的IP地址是127.0.0.1 所以还是不行[/quote] 你本地地址当然是127.0.0.1啊,这个不是代码问题,你这回环地址根本就不会经过网卡的(貌似),真实ip自然获取不到[/quote]谢谢哟 感谢你的解答
贼皮滴小仙女 2018-05-11
  • 打赏
  • 举报
回复
引用 4 楼 xwn_2016 的回复:
接楼上大神,如果是127.0.0.1
if(ip.equals("127.0.0.1")){       
                   //根据网卡取本机配置的IP       
                   InetAddress inet=null;       
                   try {       
                       inet = InetAddress.getLocalHost();       
                   } catch (Exception e) {       
                       e.printStackTrace();       
                   }       
                   ip= inet.getHostAddress();       
               } 
获取到了 非常感谢
xwn_2016 2018-05-11
  • 打赏
  • 举报
回复
接楼上大神,如果是127.0.0.1
if(ip.equals("127.0.0.1")){       
                   //根据网卡取本机配置的IP       
                   InetAddress inet=null;       
                   try {       
                       inet = InetAddress.getLocalHost();       
                   } catch (Exception e) {       
                       e.printStackTrace();       
                   }       
                   ip= inet.getHostAddress();       
               } 
maradona1984 2018-05-11
  • 打赏
  • 举报
回复
引用 2 楼 qq_38413523 的回复:
[quote=引用 1 楼 maradona1984 的回复:] 跟框架无关,话说这东西随便百度就能拿到,这个算比较全的了,就算有反向代理什么的都能获取ip

	/**
	 * 获取ip地址
	 * 
	 * @param request
	 * @return
	 */
	public static String getIpAddress(HttpServletRequest request) {
		// 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址
		String ip = request.getHeader("X-Forwarded-For");
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			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.getHeader("HTTP_CLIENT_IP");
			}
			if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
				ip = request.getHeader("HTTP_X_FORWARDED_FOR");
			}
			if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
				ip = request.getRemoteAddr();
			}
		} else if (ip.length() > 15) {
			String[] ips = ip.split(",");
			for (int index = 0; index < ips.length; index++) {
				String strIp = (String) ips[index];
				if (!("unknown".equalsIgnoreCase(strIp))) {
					ip = strIp;
					break;
				}
			}
		}
		return ip;
	}
然后我写了之后获取到的IP地址是127.0.0.1 所以还是不行[/quote] 你本地地址当然是127.0.0.1啊,这个不是代码问题,你这回环地址根本就不会经过网卡的(貌似),真实ip自然获取不到
贼皮滴小仙女 2018-05-11
  • 打赏
  • 举报
回复
引用 1 楼 maradona1984 的回复:
跟框架无关,话说这东西随便百度就能拿到,这个算比较全的了,就算有反向代理什么的都能获取ip

/**
* 获取ip地址
*
* @param request
* @return
*/
public static String getIpAddress(HttpServletRequest request) {
// 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址
String ip = request.getHeader("X-Forwarded-For");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
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.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
} else if (ip.length() > 15) {
String[] ips = ip.split(",");
for (int index = 0; index < ips.length; index++) {
String strIp = (String) ips[index];
if (!("unknown".equalsIgnoreCase(strIp))) {
ip = strIp;
break;
}
}
}
return ip;
}
然后我写了之后获取到的IP地址是127.0.0.1 所以还是不行

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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