获取电脑ip地址的代码工具类

获取ip地址的工具类

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

public class IPUtils {
	private static Logger logger = LoggerFactory.getLogger(IPUtils.class);
	public static String getIpAddr() {
		HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
		String ip = null;
		try {
			ip = request.getHeader("x-forwarded-for");
					if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
						ip = request.getHeader("Proxy-Client-IP");
					}
					if (StringUtils.isEmpty(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
						ip = request.getHeader("WL-Proxy-Client-IP");
					}
					if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
						ip = request.getHeader("HTTP_CLIENT_IP");
					}
					if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
						ip = request.getHeader("HTTP_X_FORWARDED_FOR");
					}
					if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
						ip = request.getRemoteAddr();
					}
		} catch (Exception e) {
			logger.error("IPUtils ERROR ", e);
		}
		return ip;
	}
}

热门文章

暂无图片
编程学习 ·

Java 常见校验汇总

1.手机号校验(境内11位) String phontNo="12356772112"; Pattern pattern = Pattern.compile("^((13[0-9])|(14[5,7,9])|(15[0-3,5-9])|(166)|(17[3,5,6,7,8])" + "|(18[0-9])|(19[8,9]))\\d{8}$"); if (!pattern.matcher(para.getPhoneNo()).ma…
暂无图片
编程学习 ·

安卓安全那点事

本文旨在对于一个安卓app的安全知识做一个较为泛泛的总结,为开发出更安全的应用提供思路。内容比较粗略,仅起到抛砖引玉的效果,还望大家见谅。Android应用的安全 意义 在维基百科上有一个关于计算机安全的定义: 计算机安全(computer security)是计算机与网络领域的信息安…
暂无图片
编程学习 ·

面向对象(二)- java

面向对象(二) 一、封装 封装使得对代码的修改更加安全和容易。将代码分成了一个个相对独立的单元。 封装所带来的好处是:明确的指出了那些属性和方法是外部可以访问的。这样当你需要调整这个类的代码时,只要 保证公有(Public:)属性不变,公有方法的参数和返回值类型不变,那…
暂无图片
编程学习 ·

Scanner对象

Scanner对象 作为输入使用,主要有两种接收键盘输入字符的方法,next()方法和nextLine()方法,下面介绍一下 import java.util.Scanner;public class demo01 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输…
暂无图片
编程学习 ·

车载TBOX标准-用于和后台系统/手机APP通信,实现手机APP车辆控制

基于新能源汽车控制数据智能终端T-BOX对于共享汽车(汽车分时租赁)场景中司机通过手机APP实现预订车辆、查找车辆、无线开门、启动车辆、还车等操作。 手机APP、云端平台与车辆实现信息互通。 T-Box作为车辆与云端平台实现互通的关键设备,不仅能把采集到的车辆数据(如新能源汽车…
暂无图片
编程学习 ·

大数据分析的作用有哪些

大数据分析的出现不但可以让老百姓的生活更加便捷,同时也可以提高企业的竞争力,无论是哪个行业以及具体的企业都会有与之对应的大数据分析,而今天就来说说大数据分析对于企业有哪些帮助。数据分析目的1:分类检查未知分类或暂时未知分类的数据,目的是预测数据属于哪个类别或…
暂无图片
编程学习 ·

收藏量4w+的Web开发框架,你还没学?点击收藏!

Python的Web开发,也是工作岗位比较多的领域。如果你对Python的Web开发有兴趣,正打算开始学习使用Python做Web开发等,那么学习一门基于Python的Web开发框架是必修课。Python作为当前最热门,也是最主要的Web开发语言之一,在其二十多年的历史中出现了数十种Web框架,比如Djan…
暂无图片
编程学习 ·

使用john软件进行账户弱口令检测实验

使用john软件进行账户弱口令检测实验 前言 在生产环境中,服务器账号的密码能够不被黑客入侵破解是尤为重要的,关系着业务正常运行的安全,所以在创建完账户的密码后,我们需要进行弱口令的检测,排查出是否有容易被破解的密码存在。 本次实验使用的破解密码软件是john-1.8.0版…
暂无图片
编程学习 ·

荣耀X10 Max发布在即 屏幕优势显著

前一阵就听说了荣耀X10 Max将在7月2日发布的消息,不知不觉中已经只剩不到一周的时间了,作为今年唯一的5G大屏手机,人们关注的无非是它的屏幕,以及各项配置。刚刚荣耀X10 Max又有了更多的爆料信息,下面就跟大家来聊一聊这款即将发布的5G大屏手机。荣耀X10 Max采用了一块7.0…
暂无图片
编程学习 ·

使用mimikatz获取机器的RDP凭据

当我们拿到了机器的管理员权限后,想获取其RDP凭据保存的密码。那么,该如何操作呢?#查看mstsc的连接纪录 cmdkey /list #查找本地的Credentials: dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*上传mimikatz,执行以下命令:
暂无图片
编程学习 ·

Maven工程配置(build/run委托,skipTests)

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是…
暂无图片
编程学习 ·

Vue——09——v-for和key指令

遍历普通数组 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><scri…
暂无图片
编程学习 ·

css少见的标签

font-smoothing抗锯齿-moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased;-webkit-font-smoothing它有三个属性值:none:对低像素的文本比较好subpixel-antialiased:默认值antialiased:抗锯齿很好解决光标颜色和文字颜色一致@supports (-webkit-mask…
暂无图片
编程学习 ·

k8s(1)

k8s-集群搭建的三种方式,目前主流的搭建k8s集群的方式有kubeadm、minikube,二进制包。kubeadm 是一个工具,用于快速搭建kubernetes集群,目前应该是比较方便和推荐的,简单易用 kubeadm是Kubernetes 1.4开始新增的特性 kubeadm init 以及 kubeadm join 这两个命令可以快速创…
暂无图片
编程学习 ·

C语言求两个数的最大公约数

#include<stdio.h> int main () {int i,j,t;scanf("%d %d",&i,&j);int m;if(i>j)//比较两者大小,让i存储两者较小的数; {t=i; //如果I>J,i j 位置互换 i=j;j=t;}for(m=i;m>0;m--)//因为两数的最大公约数必然是比两数最大的数字小,可能小于…