java获取客户端的ip地址
2016-03-08 00:00
513 查看
有时候我们需要根据系统的业务,做一些事情,比如,我这里有一个商城,今天有一件商品促销,限每个ip只能购买一件,那么我们就需要记录用户下单的ip,好的下面我直接贴出来代码。
OK,这个方法会返回一个用户的ip地址的字符串。
/** * 获得客户端ip地址 * * @param request * @return 获得客户端ip地址 */ public final static String getClientIp(HttpServletRequest request){ String unknown = "unknown"; String wrap = "\n\t\t"; StringBuilder logBuilder = new StringBuilder(); // 是否使用反向代理 String ipAddress = request.getHeader(header_xForwardedFor); logBuilder.append(wrap + "header_xForwardedFor:" + ipAddress); if (Validator.isNullOrEmpty(ipAddress) || unknown.equalsIgnoreCase(ipAddress)){ ipAddress = request.getHeader(header_proxyClientIP); logBuilder.append(wrap + "header_proxyClientIP:" + ipAddress); } if (Validator.isNullOrEmpty(ipAddress) || unknown.equalsIgnoreCase(ipAddress)){ ipAddress = request.getHeader(header_wLProxyClientIP); logBuilder.append(wrap + "header_wLProxyClientIP:" + ipAddress); } if (Validator.isNullOrEmpty(ipAddress) || unknown.equalsIgnoreCase(ipAddress)){ ipAddress = request.getRemoteAddr(); logBuilder.append(wrap + "request.getRemoteAddr():" + ipAddress); } // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割 if (ipAddress != null && ipAddress.length() > 15){ // "***.***.***.***".length() = 15 logBuilder.append(wrap + "all:" + ipAddress); if (ipAddress.indexOf(",") > 0){ ipAddress = ipAddress.substring(0, ipAddress.indexOf(",")); } } log.debug(logBuilder.toString()); return ipAddress; }
OK,这个方法会返回一个用户的ip地址的字符串。
相关文章推荐
- CompressUtils相关代码,java中文件压缩或解压已经文件的基本操作等方法
- POI实现java导出Excel功能
- spring+mybatis 根据业务场景访问不同数据库,读写分离
- hadoop+hbase+zookeeper 分布式集群搭建 + eclipse远程连接hdfs 完美运行
- 全局的异常捕获Struts2
- jdk1.6下使用sardine和jackrabbit-webdav的问题
- spring利用javamail,quartz定时发送邮件
- springmvc中针对一个controller方法配置两个url请求
- JAVA反射机制的应用场景(注:菜鸟勿喷~~)
- java中使用poi实现导入Excel
- Hadoop集群(第7期)_Eclipse开发环境设置
- spring动画-iOS-备
- java中使用XStream实现将对象转为xml格式字符串或者将xml格式的字符串转换为对象==
- springMVC中使用List和Map绑定对象作为参数的使用方法
- 使用Spring的JAVA Mail支持简化邮件发送
- java中split的坑,用的时候一定要小心
- Git中的AutoCRLF与SafeCRLF换行符问题(及eclipse设置)
- Java小并发下短期任务的线程池
- /.org.eclipse.jdt.core.external.folders/.link0解决方法
- java变量命名规范