SystemUtil工具類 獲取HttpServletRequest中的訪問者的一些信息

本文由黑殼網(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));
  }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末劈彪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子顶猜,更是在濱河造成了極大的恐慌沧奴,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件长窄,死亡現(xiàn)場離奇詭異滔吠,居然都是意外死亡,警方通過查閱死者的電腦和手機挠日,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門屠凶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肆资,你說我怎么就攤上這事≡钪ィ” “怎么了郑原?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長夜涕。 經(jīng)常有香客問我犯犁,道長,這世上最難降的妖魔是什么女器? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任酸役,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘涣澡。我一直安慰自己贱呐,他們只是感情好,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布入桂。 她就那樣靜靜地躺著奄薇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抗愁。 梳的紋絲不亂的頭發(fā)上馁蒂,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天,我揣著相機與錄音蜘腌,去河邊找鬼沫屡。 笑死,一個胖子當著我的面吹牛撮珠,可吹牛的內(nèi)容都是我干的沮脖。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼劫瞳,長吁一口氣:“原來是場噩夢啊……” “哼倘潜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起志于,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤涮因,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后伺绽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體养泡,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年奈应,在試婚紗的時候發(fā)現(xiàn)自己被綠了澜掩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡杖挣,死狀恐怖肩榕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惩妇,我是刑警寧澤株汉,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站歌殃,受9級特大地震影響乔妈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜氓皱,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一路召、第九天 我趴在偏房一處隱蔽的房頂上張望勃刨。 院中可真熱鬧,春花似錦股淡、人聲如沸身隐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抡医。三九已至,卻和暖如春早敬,著一層夾襖步出監(jiān)牢的瞬間忌傻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工搞监, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留水孩,地道東北人。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓琐驴,卻偏偏與公主長得像俘种,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子绝淡,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 戴了頂太大的帽子宙刘,有點力不從心! 看推薦和書封面上寫的神神忽忽的牢酵,就買來神神忽忽地開始看了悬包!沒什么驚喜,感覺作者還...
    安古閱讀 4,235評論 0 0
  • 1馍乙、結(jié)構(gòu)主義心理學(xué) 2布近、機能主義心理學(xué) 3、行為主義心理學(xué) 4丝格、格式塔心理學(xué) 這一派心理學(xué)建議搞設(shè)計美學(xué)的都去碰碰...
    我是豌豆姑娘閱讀 1,237評論 0 8
  • 對于一個年輕人來說撑瞧,一座向往已久的陌生城市就像是一個充滿美好幻想的情婦,對于段毅來說亦是如此显蝌。大學(xué)剛畢業(yè)的他毅然決...
    光趟芍兒閱讀 958評論 2 3
  • 今天是初中畢業(yè)三十周年同學(xué)會预伺,大家都到了,唯獨沒有你曼尊。 我們知道你不會來扭屁,但是還是給你留了位置,仍在我旁邊涩禀。 No...
    青青農(nóng)夫閱讀 321評論 2 3