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]
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]
相关文章推荐
- java精确除法计算,四舍五入 Java问题通用解决代码
- 百度地图API 云存储·LBS.云 跨域问题解决方法——通过java.net.URLConnection发送HTTP请求
- jmeter 使用beanshell 调用 java 代码解决请求签名相关问题
- java实现 HTTP/HTTPS请求绕过证书检测代码实现
- java中按字节获得字符串长度的两种方法 Java问题通用解决代码
- java替换文本中所有的正则符号 Java问题通用解决代码
- Java除法结果带小数、进一法的实现 Java问题通用解决代码
- java实现 HTTP/HTTPS请求绕过证书检测代码实现
- Java HttpURLConnection模拟请求Rest接口解决中文乱码问题
- java中替换双引号 Java问题通用解决代码 Java问题通用解决代码
- java计算时间差 Java问题通用解决代码
- Java HttpURLConnection模拟请求Rest接口解决中文乱码问题
- 利用AFNetworking 的AFHTTPSessionManager代码实现代理的方式访问任意指定IP地址,解决域名DNS上的问题
- JavaScript(XMLHttpRequest)跨域访问解决办法及安全性问题(附java写的proxy代码)
- java实现 HTTP/HTTPS请求绕过证书检测代码实现
- java统计中英文字数 Java问题通用解决代码
- java 根据生日计算年龄 Java问题通用解决代码
- java清除所有微博短链接 Java问题通用解决代码
- Java httpclient请求,解决乱码问题
- java 实现新浪微博内容计数器 Java问题通用解决代码