HttpServletRequest获取IP,操作系统等各种信息

HttpServletRequest request = ServletActionContext.getRequest();  
System.out.println("浏览器基本信息:"+request.getHeader("user-agent"));  
System.out.println("客户端系统名称:"+System.getProperty("os.name"));  
System.out.println("客户端系统版本:"+System.getProperty("os.version"));  
System.out.println("客户端操作系统位数:"+System.getProperty("os.arch"));  
System.out.println("HTTP协议版本:"+request.getProtocol());  
System.out.println("请求编码格式:"+request.getCharacterEncoding());  
System.out.println("Accept:"+request.getHeader("Accept"));  
System.out.println("Accept-语言:"+request.getHeader("Accept-Language"));  
System.out.println("Accept-编码:"+request.getHeader("Accept-Encoding"));  
System.out.println("Connection:"+request.getHeader("Connection"));  
System.out.println("Cookie:"+request.getHeader("Cookie"));  
System.out.println("客户端发出请求时的完整URL"+request.getRequestURL());  
System.out.println("请求行中的资源名部分"+request.getRequestURI());  
System.out.println("请求行中的参数部分"+request.getRemoteAddr());  
System.out.println("客户机所使用的网络端口号"+request.getRemotePort());  
System.out.println("WEB服务器的IP地址"+request.getLocalAddr());  
System.out.println("WEB服务器的主机名"+request.getLocalName());  
System.out.println("客户机请求方式"+request.getMethod());  
System.out.println("请求的文件的路径"+request.getServerName());  
System.out.println("请求体的数据流"+request.getReader());  
BufferedReader br=request.getReader();  
String res = "";   
while ((res = br.readLine()) != null) {    
   System.out.println("request body:" + res);     
}  
System.out.println("请求所使用的协议名称"+request.getProtocol());  
System.out.println("请求中所有参数的名字"+request.getParameterNames());  
Enumeration enumNames= request.getParameterNames();  
while (enumNames.hasMoreElements()) {  
      String key = (String) enumNames.nextElement();  
      System.out.println("参数名称:"+key);  
}  

使用工具类

导入maven依赖

在这里插入图片描述

<!-- https://mvnrepository.com/artifact/nl.bitwalker/UserAgentUtils -->
<dependency>
    <groupId>nl.bitwalker</groupId>
    <artifactId>UserAgentUtils</artifactId>
    <version>1.2.4</version>
</dependency>

用法

package com.ninesword.nsclick.utils;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import eu.bitwalker.useragentutils.Browser;
import eu.bitwalker.useragentutils.OperatingSystem;
import eu.bitwalker.useragentutils.UserAgent;

/
public class UserAgentUtils {
	
	private static Logger logger = LoggerFactory.getLogger(UserAgentUtils.class);
	
	/**
	 * 根据http获取userAgent信息
	 * @param request
	 * @return
	 */
	public static String getUserAgent(HttpServletRequest request) {
		String userAgent=request.getHeader("User-Agent");
		return userAgent;
	}
	
	/**
	 * 根据request获取userAgent,然后解析出osVersion
	 * @param request
	 * @return
	 */
	public static String getOsVersion(HttpServletRequest request) {
		String userAgent = getUserAgent(request);
		return getOsVersion(userAgent);
	}
	
	/**
	 * 根据userAgent解析出osVersion
	 * @param userAgent
	 * @return
	 */
	public static String getOsVersion(String userAgent) {
		String osVersion = "";
		if(StringUtils.isBlank(userAgent)) 
			return osVersion;
		String[] strArr = userAgent.substring(userAgent.indexOf("(")+1,
				userAgent.indexOf(")")).split(";");
		if(null == strArr || strArr.length == 0) 
			return osVersion;
		
		osVersion = strArr[1];
		logger.info("osVersion is:{}", osVersion);
		return osVersion;
	}
	
	/**
	 * 获取操作系统对象
	 * @param request
	 * @return
	 */
	private static OperatingSystem getOperatingSystem(String userAgent) {
		UserAgent agent = UserAgent.parseUserAgentString(userAgent);
		OperatingSystem operatingSystem = agent.getOperatingSystem();
		return operatingSystem;
	}
	

	
	/**
	 * 获取os:Windows/ios/Android
	 * @param request
	 * @return
	 */
	public static String getOs(HttpServletRequest request) {
		String userAgent = getUserAgent(request);
		return getOs(userAgent);
	}
	
	/**
	 * 获取os:Windows/ios/Android
	 * @param request
	 * @return
	 */
	public static String getOs(String userAgent) {
		OperatingSystem operatingSystem =  getOperatingSystem(userAgent);
		String os = operatingSystem.getGroup().getName();
		logger.info("os is:{}", os);
		return os;
	}
	
	
	/**
	 * 获取deviceType
	 * @param request
	 * @return
	 */
	public static String getDevicetype(HttpServletRequest request) {
		String userAgent = getUserAgent(request);
		return getDevicetype(userAgent);
	}
	
	/**
	 * 获取deviceType
	 * @param request
	 * @return
	 */
	public static String getDevicetype(String userAgent) {
		OperatingSystem operatingSystem =  getOperatingSystem(userAgent);
		String deviceType = operatingSystem.getDeviceType().toString();
		logger.info("deviceType is:{}", deviceType);
		return deviceType;
	}

	/**
	 * 获取操作系统的名字
	 * @param request
	 * @return
	 */
	public static String getOsName(HttpServletRequest request) {
		String userAgent = getUserAgent(request);
		return getOsName(userAgent);
	}
	
	/**
	 * 获取操作系统的名字
	 * @param request
	 * @return
	 */
	public static String getOsName(String userAgent) {
		OperatingSystem operatingSystem =  getOperatingSystem(userAgent);
		String osName = operatingSystem.getName();
		logger.info("osName is:{}", osName);
		return osName;
	}
	
	
	/**
	 * 获取device的生产厂家
	 * @param request
	 */
	public static String getDeviceManufacturer(HttpServletRequest request) {
		String userAgent = getUserAgent(request);
		return getDeviceManufacturer(userAgent);
	}
	
	/**
	 * 获取device的生产厂家
	 * @param request
	 */
	public static String getDeviceManufacturer(String userAgent) {
		OperatingSystem operatingSystem =  getOperatingSystem(userAgent);
		String deviceManufacturer = operatingSystem.getManufacturer().toString();
		logger.info("deviceManufacturer is:{}", deviceManufacturer);
		return deviceManufacturer;
	}
	
	/**
	 * 获取浏览器对象
	 * @param request
	 * @return
	 */
	public static Browser getBrowser(String agent) {
		UserAgent userAgent = UserAgent.parseUserAgentString(agent);
		Browser browser = userAgent.getBrowser();
		return browser;
	}

	
	/**
	 * 获取browser name
	 * @param request
	 * @return
	 */
	public static String getBorderName(HttpServletRequest request) {
		String userAgent = getUserAgent(request);
		return getBorderName(userAgent);
	}
	
	/**
	 * 获取browser name
	 * @param request
	 * @return
	 */
	public static String getBorderName(String userAgent) {
		Browser browser =  getBrowser(userAgent);
		String borderName = browser.getName();
		logger.info("borderName is:{}", borderName);
		return borderName;
	}
	
	
	/**
	 * 获取浏览器的类型
	 * @param request
	 * @return
	 */
	public static String getBorderType(HttpServletRequest request) {
		String userAgent = getUserAgent(request);
		return getBorderType(userAgent);
	}
	
	/**
	 * 获取浏览器的类型
	 * @param request
	 * @return
	 */
	public static String getBorderType(String userAgent) {
		Browser browser =  getBrowser(userAgent);
		String borderType = browser.getBrowserType().getName();
		logger.info("borderType is:{}", borderType);
		return borderType;
	}
	
	/**
	 * 获取浏览器组: CHROME、IE
	 * @param request
	 * @return
	 */
	public static String getBorderGroup(HttpServletRequest request) {
		String userAgent = getUserAgent(request);
		return getBorderGroup(userAgent);
	}
	
	/**
	 * 获取浏览器组: CHROME、IE
	 * @param request
	 * @return
	 */
	public static String getBorderGroup(String userAgent) {
		Browser browser =  getBrowser(userAgent);
		String browerGroup = browser.getGroup().getName();
		logger.info("browerGroup is:{}", browerGroup);
		return browerGroup;
	}
	
	/**
	 * 获取浏览器的生产厂商
	 * @param request
	 * @return
	 */
	public static String getBrowserManufacturer(HttpServletRequest request) {
		String userAgent = getUserAgent(request);
		return getBrowserManufacturer(userAgent);
	}
	
	
	/**
	 * 获取浏览器的生产厂商
	 * @param request
	 * @return
	 */
	public static String getBrowserManufacturer(String userAgent) {
		Browser browser =  getBrowser(userAgent);
		String browserManufacturer = browser.getManufacturer().getName();
		logger.info("browserManufacturer is:{}", browserManufacturer);
		return browserManufacturer;
	}
	
	
	/**
	 * 获取浏览器使用的渲染引擎
	 * @param request
	 * @return
	 */
	public static String getBorderRenderingEngine(HttpServletRequest request) {
		String userAgent = getUserAgent(request);
		return getBorderRenderingEngine(userAgent);
	}
	
	/**
	 * 获取浏览器使用的渲染引擎
	 * @param request
	 * @return
	 */
	public static String getBorderRenderingEngine(String userAgent) {
		Browser browser =  getBrowser(userAgent);
		String renderingEngine = browser.getRenderingEngine().name();
		logger.info("renderingEngine is:{}", renderingEngine);
		return renderingEngine;
	}
	
	
	/**
	 * 获取浏览器版本
	 * @param request
	 * @return
	 */
	public static String getBrowserVersion(HttpServletRequest request) {
		String userAgent = getUserAgent(request);
		return getBrowserVersion(userAgent);
	}
	
	/**
	 * 获取浏览器版本
	 * @param request
	 * @return
	 */
	public static String getBrowserVersion(String userAgent) {
		Browser browser =  getBrowser(userAgent);
		String borderVersion = browser.getVersion( userAgent).toString();
		return borderVersion;
	}
	

	public static void main(String[] args) {
//		String androidUserAgent = "Mozilla/5.0 (Linux; Android 8.0; LON-AL00 Build/HUAWEILON-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/6.2 TBS/044204 Mobile Safari/537.36 V1_AND_SQ_7.7.8_908_YYB_D QQ/7.7.8.3705 NetType/WIFI WebP/0.3.0 Pixel/1440";
//		String iosUserAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16A366 QQ/7.7.8.421 V1_IPH_SQ_7.7.8_1_APP_A Pixel/750 Core/UIWebView Device/Apple(iPhone 6s) NetType/WIFI QBWebViewType/1";
		String winUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36";
		
		System.out.println("浏览器组:"+getBorderGroup(winUserAgent));
		System.out.println("浏览器名字:"+getBorderName(winUserAgent));
		System.out.println("浏览器类型"+getBorderType(winUserAgent));
		System.out.println("浏览器生产商:"+getBrowserManufacturer(winUserAgent));
		System.out.println("浏览器版本:"+getBrowserVersion(winUserAgent));
		System.out.println("设备生产厂商:"+getDeviceManufacturer(winUserAgent));
		System.out.println("设备类型:"+getDevicetype(winUserAgent));
		System.out.println("设备操作系统:"+getOs(winUserAgent));
		System.out.println("操作系统的名字:"+getOsName(winUserAgent));
		System.out.println("操作系统的版本号:"+getOsVersion(winUserAgent));
		System.out.println("操作系统浏览器的渲染引擎:"+getBorderRenderingEngine(winUserAgent));
	}

}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值