以后再用到的话,至少能起个参考作用
java实现,struts2的Action中,依赖HttpServletRequest
 
 

package net.dookoo.web.action;
 
import java.util.Enumeration;
 
import javax.servlet.http.HttpServletRequest;
 
import com.linktong.webframework.action.BaseAction;
 
/**
 * 检测系列操作
 *
 * @author sven
 * @version 1.0(新版本号)
 * @see 参考的JavaDoc
 */
public class CheckAction extends BaseAction {
 
      @Override
      public int getObjCount() {
            // TODO Auto-generated method stub
            return 0;
      }
 
      public String getIpAddrByRequest(HttpServletRequest request) {
            // String ip = request.getHeader("x-forwarded-for");
 
            String ip = null;
            String localIP = "127.0.0.1";
                  
            // 反向代理标识不区分大小写,防止配置问题
            Enumeration enumeration = null;
            
//          enumeration = request.getHeaderNames();
//          System.out.println("header----------------");
//          while (enumeration.hasMoreElements()) {
//                String headerName = (String) enumeration.nextElement();
//                System.out.println(headerName+"-"+request.getHeader(headerName));
//          }
//          System.out.println("header----------------");
            
            enumeration = request.getHeaderNames();
            while (enumeration.hasMoreElements()) {
                  String headerName = (String) enumeration.nextElement();
                  
                  if ("cdn-src-ip".equalsIgnoreCase(headerName)) {
                        ip = request.getHeader(headerName);
//                      System.out.println("headerName:"+headerName);
                        break;
                  }
            }
//          System.out.println("cdn-src-ip:" + ip);
            
            enumeration = request.getHeaderNames();
            if (ip == null || ip.length() == 0 || (ip.equalsIgnoreCase(localIP)) || "unknown".equalsIgnoreCase(ip)) {
                  while (enumeration.hasMoreElements()) {
                        String headerName = (String) enumeration.nextElement();
                        
                        if ("x-forwarded-for".equalsIgnoreCase(headerName)) {
                              ip = request.getHeader(headerName);
//                            System.out.println("headerName:"+headerName);
                              break;
                        }
                  }
            }
//          System.out.println("x-forwarded-for:" + ip);
            
            if (ip == null || ip.length() == 0 || (ip.equalsIgnoreCase(localIP)) || "unknown".equalsIgnoreCase(ip)) {
                  ip = request.getHeader("Proxy-Client-IP");
            }
//          System.out.println("Proxy-Client-IP:" + request.getHeader("Proxy-Client-IP"));
 
            
            if (ip == null || ip.length() == 0 || (ip.equalsIgnoreCase(localIP)) || "unknown".equalsIgnoreCase(ip)) {
                  ip = request.getHeader("WL-Proxy-Client-IP");
            }
//          System.out.println("WL-Proxy-Client-IP:" + request.getHeader("WL-Proxy-Client-IP"));
 
            
            if (ip == null || ip.length() == 0 || (ip.equalsIgnoreCase(localIP)) || "unknown".equalsIgnoreCase(ip)) {
                  ip = request.getRemoteAddr();
            }
//          System.out.println("RemoteAddr:" + request.getRemoteAddr());
 
            return ip;
      }
 
      public String checkAnonymityIP() {
            try {
                  String ipAddr = getIpAddrByRequest(getRequest());
                  this.debugTrace("check", "检测到请求的ip地址为" + ipAddr);
                  // System.out.println(ipAddr);
 
                  getRequest().setAttribute("ipAddr", ipAddr);
            } catch (Throwable e) {
                  this.errorTrace("check", e.getMessage(), e);
                  getRequest().setAttribute(this.ERRORMESSAGEthis.SYSTEMERROR);
                  return this.ERROR;
            }
            return this.SUCCESS;
      }
 
}

java检测http请求的ip地址 Java问题通用解决代码的更多相关文章

  1. JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

    JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...

  2. java后端通过request对象获取请求的ip地址工具类

    package cn.zgjkw.battalion.util; import org.apache.log4j.Logger; import javax.servlet.http.HttpServl ...

  3. java如何获取访问真实IP地址?

    java如何获取访问真实IP地址 解决方法: 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址,如果没有代理,则获取真实ip public static String getIp( ...

  4. JAVA 长整型转换为IP地址的方法

    JAVA 长整型转换为IP地址的方法 代码例如以下: /** * 整型解析为IP地址 * @param num * @return */ public static String int2iP(Lon ...

  5. JAVA从本机获取IP地址

    JAVA从本机获取IP地址 论述: 此篇博客是在工作的时候,需要获得当前网络下面正确的ip地址,在网上查阅很多博客,网上一个比较普遍的说法是通过InetAddress.getLocalHost().g ...

  6. Java 获取客服端ip地址

    Java 获取客服端ip地址 /** * <html> * <body> * <P> Copyright 1994 JsonInternational</p& ...

  7. 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址;

    package com.utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.servlet.htt ...

  8. 通过Request对象获取请求的IP地址

    /** * 标识要从哪些消息头中获取IP地址 */ private static final String[] getIpArray = {"HTTP_X_FORWARDED_FOR&quo ...

  9. 淘宝IP地址库采集器c#代码

    这篇文章主要介绍了淘宝IP地址库采集器c#代码,有需要的朋友可以参考一下. 最近做一个项目,功能类似于CNZZ站长统计功能,要求显示Ip所在的省份市区/提供商等信息.网上的Ip纯真数据库,下载下来一看 ...

随机推荐

  1. likely,unlikely宏与GCC内建函数__builtin_expect()

    在 GCC 手册中对 __builtin_expect() 的描述是这样的: 由于大部分程序员在分支预测方面做得很糟糕,所以 GCC 提供了这个内建函数来帮助程序员处理分支预测,优化程序.其第一个参数 ...

  2. "select一直返回0"的问题解决和总结

    场景:一个简单的TCP 服务器,以实现UPNP的事件体系结构 我在linux平台下,创建一个TCP套接字,绑定到49156端口,向UPNP SERVER发一个subscribe订阅请求,超时时间设置为 ...

  3. 终于遇到了传说的ie 6 img 3px的bug

    最近在做一个网站,基本上已经算完成,就开始完善细节部分了. IE6可能是微软最为YD 的一款浏览器了吧,至今还没有退出历史的舞台,尽管google都宣布不在支持它了. 因为该死的ie6,虽死但是牢牢地 ...

  4. hdu 5084(矩阵操作)

    HeHe Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submis ...

  5. Python的网络编程[3] -> BOOTP 协议[1] -> BOOTP 的 Python 实现

    BOOTP实现 / BOOTP Implement 目录 BOOTP 的服务器建立过程 BOOTP 的客户端建立过程 Note: 理论部分请参考文末相关阅读链接 1 BOOTP 的服务器建立过程 服务 ...

  6. POJ 3080-Blue Jeans【kmp,字符串剪接】

    Blue Jeans Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20695   Accepted: 9167 Descr ...

  7. Apache优化建议

    Apache是Web服务器软件,它最常见是搭配PHP开发语言去使用.今天,小编根据Apache官方手册再结合实际,整理出下面这些优化建议,希望对大家的Apache服务器的运行效率有效果. 1.控制Ma ...

  8. 洛谷——P1093 奖学金

    P1093 奖学金 题目描述 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金.期末,每个学生都有3门课的成绩:语文.数学.英语.先按总分从高到低排序,如果两个同学总分相 ...

  9. WC 2018/CTSC 2018/APIO 2018 游记

    (要写CTSC的时候才想起来没写WC2018,那就粗略回顾一下吧hhhhh) WC 2018(简略版): 大概和 一个宁夏和一个天津的大哥一个宿舍hhhh,字典序分宿舍真是奇妙. WC讲课真的不是人听 ...

  10. [POI2014]Freight

    题目大意: 有两个城镇$A$和$B$,有$n(n\le10^6)$辆车从$A$地出发前往$B$再返回$A$地.两地之间的行驶时间为$s(s\le10^9)$,每辆车从$A$地出发的最早时间是$t_i( ...