您的位置:首页 > 理论基础 > 计算机网络

java检测http请求的ip地址 Java问题通用解决代码

2014-11-08 10:38 603 查看
以后再用到的话,至少能起个参考作用
java实现,struts2的Action中,依赖HttpServletRequest

[align=left]package net.dookoo.web.action;[/align]
[align=left] [/align]
[align=left]import java.util.Enumeration;[/align]
[align=left] [/align]
[align=left]import javax.servlet.http.HttpServletRequest;[/align]
[align=left] [/align]
[align=left]import com.linktong.webframework.action.BaseAction;[/align]
[align=left] [/align]
[align=left]/**[/align]
[align=left] * 检测系列操作[/align]
[align=left] *[/align]
[align=left] * @author sven[/align]
[align=left] * @version 1.0(新版本号)[/align]
[align=left] * @see 参考的JavaDoc[/align]
[align=left] */[/align]
[align=left]public class CheckAction extends BaseAction {[/align]
[align=left] [/align]
[align=left] @Override[/align]
[align=left] public int getObjCount() {[/align]
[align=left] // TODO Auto-generated method stub[/align]
[align=left] return 0;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public String getIpAddrByRequest(HttpServletRequest request) {[/align]
[align=left] // String ip = request.getHeader("x-forwarded-for");[/align]
[align=left] [/align]
[align=left] String ip = null;[/align]
[align=left] String localIP = "127.0.0.1";[/align]
[align=left] [/align]
[align=left] // 反向代理标识不区分大小写,防止配置问题[/align]
[align=left] Enumeration enumeration = null;[/align]
[align=left] [/align]
[align=left]// enumeration = request.getHeaderNames();[/align]
[align=left]// System.out.println("header----------------");[/align]
[align=left]// while (enumeration.hasMoreElements()) {[/align]
[align=left]// String headerName = (String) enumeration.nextElement();[/align]
[align=left]// System.out.println(headerName+"-"+request.getHeader(headerName));[/align]
[align=left]// }[/align]
[align=left]// System.out.println("header----------------");[/align]
[align=left] [/align]
[align=left] enumeration = request.getHeaderNames();[/align]
[align=left] while (enumeration.hasMoreElements()) {[/align]
[align=left] String headerName = (String) enumeration.nextElement();[/align]
[align=left] [/align]
[align=left] if ("cdn-src-ip".equalsIgnoreCase(headerName)) {[/align]
[align=left] ip = request.getHeader(headerName);[/align]
[align=left]// System.out.println("headerName:"+headerName);[/align]
[align=left] break;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left]// System.out.println("cdn-src-ip:" + ip);[/align]
[align=left] [/align]
[align=left] enumeration = request.getHeaderNames();[/align]
[align=left] if (ip == null || ip.length() == 0 || (ip.equalsIgnoreCase(localIP)) || "unknown".equalsIgnoreCase(ip)) {[/align]
[align=left] while (enumeration.hasMoreElements()) {[/align]
[align=left] String headerName = (String) enumeration.nextElement();[/align]
[align=left] [/align]
[align=left] if ("x-forwarded-for".equalsIgnoreCase(headerName)) {[/align]
[align=left] ip = request.getHeader(headerName);[/align]
[align=left]// System.out.println("headerName:"+headerName);[/align]
[align=left] break;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left]// System.out.println("x-forwarded-for:" + ip);[/align]
[align=left] [/align]
[align=left] if (ip == null || ip.length() == 0 || (ip.equalsIgnoreCase(localIP)) || "unknown".equalsIgnoreCase(ip)) {[/align]
[align=left] ip = request.getHeader("Proxy-Client-IP");[/align]
[align=left] }[/align]
[align=left]// System.out.println("Proxy-Client-IP:" + request.getHeader("Proxy-Client-IP"));[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] if (ip == null || ip.length() == 0 || (ip.equalsIgnoreCase(localIP)) || "unknown".equalsIgnoreCase(ip)) {[/align]
[align=left] ip = request.getHeader("WL-Proxy-Client-IP");[/align]
[align=left] }[/align]
[align=left]// System.out.println("WL-Proxy-Client-IP:" + request.getHeader("WL-Proxy-Client-IP"));[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] if (ip == null || ip.length() == 0 || (ip.equalsIgnoreCase(localIP)) || "unknown".equalsIgnoreCase(ip)) {[/align]
[align=left] ip = request.getRemoteAddr();[/align]
[align=left] }[/align]
[align=left]// System.out.println("RemoteAddr:" + request.getRemoteAddr());[/align]
[align=left] [/align]
[align=left] return ip;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public String checkAnonymityIP() {[/align]
[align=left] try {[/align]
[align=left] String ipAddr = getIpAddrByRequest(getRequest());[/align]
[align=left] this.debugTrace("check", "检测到请求的ip地址为" + ipAddr);[/align]
[align=left] // System.out.println(ipAddr);[/align]
[align=left] [/align]
[align=left] getRequest().setAttribute("ipAddr", ipAddr);[/align]
[align=left] } catch (Throwable e) {[/align]
[align=left] this.errorTrace("check", e.getMessage(), e);[/align]
[align=left] getRequest().setAttribute(this.ERRORMESSAGE, this.SYSTEMERROR);[/align]
[align=left] return this.ERROR;[/align]
[align=left] }[/align]
[align=left] return this.SUCCESS;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left]}[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: