博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中使用HttpRequest获取用户真实IP地址端口
阅读量:3786 次
发布时间:2019-05-22

本文共 2083 字,大约阅读时间需要 6 分钟。

import javax.servlet.http.HttpServletRequest;    /**  * 自定义访问对象工具类  *   * 获取对象的IP地址等信息  * @author rainyday *  */  public class CusAccessObjectUtil {        /**      * 获取用户真实IP地址,不使用request.getRemoteAddr();的原因是有可能用户使用了代理软件方式避免真实IP地址, *       * 可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢?      * 答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。      *       * 如:X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130,      * 192.168.1.100      *       * 用户真实IP为: 192.168.1.110      *       * @param request      * @return      */      public static String getIpAddress(HttpServletRequest request) {          String ip = request.getHeader("x-forwarded-for");          if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {              ip = request.getHeader("Proxy-Client-IP");          }          if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {              ip = request.getHeader("WL-Proxy-Client-IP");          }          if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {              ip = request.getHeader("HTTP_CLIENT_IP");          }          if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {              ip = request.getHeader("HTTP_X_FORWARDED_FOR");          }          if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {              ip = request.getRemoteAddr();          }          return ip;      }        }

/**

 *获取端口

 */

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

 

转载地址:http://geztn.baihongyu.com/

你可能感兴趣的文章
spring cloud之Feign的使用
查看>>
Codeforces Round #617 (Div. 3) String Coloring(E1.E2)
查看>>
LeetCode刷题 --杂篇 --数组,链表,栈,队列
查看>>
840. 模拟哈希表(模板)
查看>>
《算法》笔记 17 - 数据压缩
查看>>
Qt Installer Framework翻译(5-2)
查看>>
Java+Selenium+Testng自动化测试学习(三)— 断言
查看>>
PAT乙级1012
查看>>
银行业务队列简单模拟(队列queue)
查看>>
MySql中的数据查询语言(DQL)三:连接查询
查看>>
MySql中的数据查询语言(DQL)五:union和limit
查看>>
数据操作语言(DML)一:插入数据insert、修改数据update、删除delete
查看>>
.properties 文件,.yml 文件 ,yaml文件语法学习
查看>>
jsp 的常用标签
查看>>
Listener 监听器
查看>>
SpringBoot自动配置原理
查看>>
IDEA连接mysql又报错设置时区!Server returns invalid timezone.
查看>>
员工管理系统二:首页和国际化实现
查看>>
员工管理系统四:员工列表实现
查看>>
员工管理系统五:增删改员工实现
查看>>