本文由黑殼網(wǎng)原創(chuàng)
本文來源SystemUtil工具類 獲取HttpServletRequest中的訪問者的一些信息 - 黑殼網(wǎng)
殼叔搞笑一刻
追我玩
一天深夜瓷式,一個年輕女子經(jīng)過一家精神病院時,突然后面?zhèn)鱽硗鄣囊宦暋?br>
女子扭頭一看辩涝,一個一絲不掛的男子正在向她追來影所。
女子嚇得拔腿就跑,后面的男人緊追不舍髓窜。
不好征讲,前面是一條死胡同据某,女子萬念俱灰,跪在地上哭著哀求道:你愿意干什么就干什么吧稳诚,只求你不要殺我哗脖。
男子狡黠地笑了笑說:真的?那現(xiàn)在你開始追我。
通過HttpServletRequest獲取ip地址才避,瀏覽器版本橱夭,以及所使用的系統(tǒng)型號,以及所訪問的網(wǎng)址桑逝。
其實代碼非常簡單棘劣,都是一些基礎(chǔ)的,只是我給整理了一下楞遏,可以拿過去直接用茬暇。
systemUtil.java
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
import java.net.UnknownHostException;
/**
* Created by kzyuan on 2017/6/21. */public class SystemUtils {
private static Logger logger = LoggerFactory.getLogger(SystemUtils.class);
/**
* 獲取訪問者IP * 在一般情況下使用Request.getRemoteAddr()即可,但是經(jīng)過nginx等反向代理軟件后寡喝,這個方法會失效糙俗。 *
* 本方法先從Header中獲取X-Real-IP,如果不存在再從X-Forwarded-For獲得第一個IP(用,分割)预鬓,
* 如果還不存在則調(diào)用Request .getRemoteAddr()巧骚。 * * @param request
* @return
*/
public static String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("X-Real-IP");
if (ip != null && !"".equals(ip) && !"unknown".equalsIgnoreCase(ip)) {
return ip;
}
ip = request.getHeader("X-Forwarded-For");
if (ip != null && !"".equals(ip) && !"unknown".equalsIgnoreCase(ip)) {
// 多次反向代理后會有多個IP值,第一個為真實IP格二。
int index = ip.indexOf(',');
if (index != -1) {
return ip.substring(0, index);
} else {
return ip;
}
} else {
return request.getRemoteAddr();
}
}
/**
* 獲取來訪者的瀏覽器版本 * * @param request
* @return
*/
public static String getRequestBrowserInfo(HttpServletRequest request) {
String browserVersion = null;
String header = request.getHeader("user-agent");
if (header == null || header.equals("")) {
return "";
}
if (header.indexOf("MSIE") > 0) {
browserVersion = "IE";
} else if (header.indexOf("Firefox") > 0) {
browserVersion = "Firefox";
} else if (header.indexOf("Chrome") > 0) {
browserVersion = "Chrome";
} else if (header.indexOf("Safari") > 0) {
browserVersion = "Safari";
} else if (header.indexOf("Camino") > 0) {
browserVersion = "Camino";
} else if (header.indexOf("Konqueror") > 0) {
browserVersion = "Konqueror";
}
return browserVersion;
}
/**
* 獲取系統(tǒng)版本信息 * * @param request
* @return
*/
public static String getRequestSystemInfo(HttpServletRequest request) {
String systenInfo = null;
String header = request.getHeader("user-agent");
if (header == null || header.equals("")) {
return "";
}
//得到用戶的操作系統(tǒng)
if (header.indexOf("NT 6.0") > 0) {
systenInfo = "Windows Vista/Server 2008";
} else if (header.indexOf("NT 5.2") > 0) {
systenInfo = "Windows Server 2003";
} else if (header.indexOf("NT 5.1") > 0) {
systenInfo = "Windows XP";
} else if (header.indexOf("NT 6.0") > 0) {
systenInfo = "Windows Vista";
} else if (header.indexOf("NT 6.1") > 0) {
systenInfo = "Windows 7";
} else if (header.indexOf("NT 6.2") > 0) {
systenInfo = "Windows Slate";
} else if (header.indexOf("NT 6.3") > 0) {
systenInfo = "Windows 9";
} else if (header.indexOf("NT 5") > 0) {
systenInfo = "Windows 2000";
} else if (header.indexOf("NT 4") > 0) {
systenInfo = "Windows NT4";
} else if (header.indexOf("Me") > 0) {
systenInfo = "Windows Me";
} else if (header.indexOf("98") > 0) {
systenInfo = "Windows 98";
} else if (header.indexOf("95") > 0) {
systenInfo = "Windows 95";
} else if (header.indexOf("Mac") > 0) {
systenInfo = "Mac";
} else if (header.indexOf("Unix") > 0) {
systenInfo = "UNIX";
} else if (header.indexOf("Linux") > 0) {
systenInfo = "Linux";
} else if (header.indexOf("SunOS") > 0) {
systenInfo = "SunOS";
}
return systenInfo;
}
/**
* 獲取來訪者的主機名稱 * * @param ip
* @return
*/
public static String getHostName(String ip) {
InetAddress inet = null;
try {
inet = InetAddress.getByName(ip);
} catch (UnknownHostException e) {
logger.error("UnknownHostException", e);
}
return inet.getHostName();
}
/**
* 執(zhí)行參考
*/
public void transfer(HttpServletRequest request) {
SystemUtils systemUtils = new SystemUtils();
String ipaddr = systemUtils.getIpAddr(request);
System.out.println(systemUtils.getIpAddr(request));
System.out.println(systemUtils.getRequestBrowserInfo(request));
System.out.println(systemUtils.getRequestSystemInfo(request));
System.out.println(systemUtils.getHostName(ipaddr));
}
}