1. import javax.servlet.http.HttpServletRequest;
  2.  
  3. /**
  4. * 自定义访问对象工具类
  5. *
  6. * 获取对象的IP地址等信息
  7. * @author X-rapido
  8. *
  9. */
  10. public class CusAccessObjectUtil {
  11.  
  12. /**
  13. * 获取用户真实IP地址,不使用request.getRemoteAddr();的原因是有可能用户使用了代理软件方式避免真实IP地址,
  14. *
  15. * 可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢?
  16. * 答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。
  17. *
  18. * 如:X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130,
  19. * 192.168.1.100
  20. *
  21. * 用户真实IP为: 192.168.1.110
  22. *
  23. * @param request
  24. * @return
  25. */
  26. public static String getIpAddress(HttpServletRequest request) {
  27. String ip = request.getHeader("x-forwarded-for");
  28. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  29. ip = request.getHeader("Proxy-Client-IP");
  30. }
  31. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  32. ip = request.getHeader("WL-Proxy-Client-IP");
  33. }
  34. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  35. ip = request.getHeader("HTTP_CLIENT_IP");
  36. }
  37. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  38. ip = request.getHeader("HTTP_X_FORWARDED_FOR");
  39. }
  40. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  41. ip = request.getRemoteAddr();
  42. }
  43. return ip;
  44. }
  45.  
  46. }

/**

*获取端口

*/

  1. public void doGet(HttpServletRequest request, HttpServletResponse response)
  2. throws ServletException, IOException {
  3. String uri = request.getRequestURI();//返回请求行中的资源名称
  4. String url = request.getRequestURL().toString();//获得客户端发送请求的完整url
  5. String ip = request.getRemoteAddr();//返回发出请求的IP地址
  6. String params = request.getQueryString();//返回请求行中的参数部分
  7. String host=request.getRemoteHost();//返回发出请求的客户机的主机名
  8. int port =request.getRemotePort();//返回发出请求的客户机的端口号。
  9. System.out.println(ip);
  10. System.out.println(url);
  11. System.out.println(uri);
  12. System.out.println(params);
  13. System.out.println(host);
  14. System.out.println(port);
  15. }

Java中使用HttpRequest获取用户真实IP地址端口的更多相关文章

  1. LNAMP架构中后端Apache获取用户真实IP地址的2种方法(转)

    一.Nginx反向代理配置: 1.虚拟主机配置 复制代码代码如下: location / {    try_files $uri @apache;} location @apache {interna ...

  2. CDN下nginx获取用户真实IP地址

    随着nginx的迅速崛起,越来越多公司将apache更换成nginx. 同时也越来越多人使用nginx作为负载均衡, 并且代理前面可能还加上了CDN加速,但是随之也遇到一个问题:nginx如何获取用户 ...

  3. asp dotnet core 从 Frp 获取用户真实 IP 地址

    我在本地开一个服务,然后通过 Frp 让小伙伴可以在外网访问我的 API 连接,但是直接通过 RemoteIp 拿到的是本地的地址.本文告诉小伙伴如何通过 Frp 可以拿到用户的真实 IP 地址 我写 ...

  4. 如何根据HttpServletRequets获取用户真实IP地址

    最近的一个项目的某个功能获取用户的ip地址,添加用户的系统使用记录. 我发现当我直接使用getRemoteAddr()方法从HttpServletRequet中获取用户的ip时,获取到的是服务器的ip ...

  5. 根据HttpServletRequest获取用户真实IP地址

    原因: 当我们通过request获取客户端IP时,自身服务器通常会为了保护信息或者负载均衡的目的,对自身服务器做反向代理.此时如果我们通过request.getRemoteAddr();可能获取到的是 ...

  6. Asp.net获取用户真实Ip地址

    /// <summary> /// 获取远程访问用户的Ip地址 /// </summary> /// <returns>返回Ip地址</returns> ...

  7. 获取用户真实Ip地址

    REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP.如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP.HTTP_CLIENT_IP 是代理服务器发送的HTTP头.如 ...

  8. java中如何自动获取电脑的ip地址

    String ip=InetAddress.getLocalHost().getHostAddress().toString(); 可以写一个main方法测试一下.

  9. Java获取客户端真实IP地址

    Java代码 import javax.servlet.http.HttpServletRequest; /** * 获取对象的IP地址等信息 */ public class IPUtil { /** ...

随机推荐

  1. 数据结构实验3:C++实现顺序栈类与链栈类

      实验3 3.1 实验目的 熟练掌握栈的顺序存储结构和链式存储结构. 熟练掌握栈的有关算法设计,并在顺序栈和链栈上实现. 根据具体给定的需求,合理设计并实现相关结构和算法.3.2实验要求3.2.1 ...

  2. CSS3 pointer-events:none 让你摆脱事件的烦恼

    以前没遇到这个属性,在一个偶然的博文下发现该属性真的好用,你是否遇到过写鼠标移入显示文本的效果时,鼠标在元素内的每一次移动都会造成要显示文本的闪烁或是突然的消失?只要在被控制的元素中加上这个属性完美解 ...

  3. python之图形界面GUI开发 Tkinter 2014-4-7

    1.导入Tkinter 可以使用以下三种方法(1)from Tkinter import *#导入Tkinter(2)import TkinterTkinter.methodA使用 Tkinter.m ...

  4. CI 安装时目录的安全处理

    如果你想通过隐藏 CodeIgniter 的文件位置来增加安全性,你可以将 system 和 application 目录修改为其他的名字,然后打开主目录下的 index.php 文件将 $syste ...

  5. jquery获取ul中li的值

  6. loadrunner使用随机值

    用户登录设置:系统用1000000001.1000000002等可以登录系统,这个代表登录的用户名

  7. C++常见函数(备忘录)

    substr(string的成员函数) 语法: basic_string substr( size_type index, size_type num = npos ); substr()返回本字符串 ...

  8. 原生js操作dom的方法

    今天学习了原生js的dom节点的操作,就记录下来,仅供自己以后参考. 1)创建节点:除了可以使用createElement创建元素,也可以使用createTextNode创建文本节点. documen ...

  9. mybatis <!-- useGeneratedKeys="true"把新增加的主键赋值到自己定义的keyProperty(id)中 -->

    <!-- useGeneratedKeys="true"把新增加的主键赋值到自己定义的keyProperty(id)中 -->

  10. jenkins节约硬盘空间的几个办法

    jenkins真是费硬盘和内存,我们先聊聊硬盘问题怎么解决: 1.不要保留太多的构建记录.发布包数量 相关描述如下:取最先匹配进行执行 2.构建完,删除吧