博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RequestUtils 包装工具类
阅读量:5356 次
发布时间:2019-06-15

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

1 package com.pc.core.util;  2   3 import java.net.MalformedURLException;  4 import java.net.URL;  5   6 import javax.servlet.http.Cookie;  7 import javax.servlet.http.HttpServletRequest;  8 import javax.servlet.http.HttpServletResponse;  9  10 import org.apache.commons.beanutils.ConvertUtils; 11 import org.apache.commons.lang.StringUtils; 12 import org.apache.commons.lang.math.NumberUtils; 13 /** 14 * RequestUtils 这个类主要是用来获取关于请求的一些信息的工具类  15 * @author YUNFENCGHENG 16 * 2011-9-19 下午04:36:22 17 */ 18 public class RequestUtils { 19  20     /** 21      * 获取客户端IP地址,此方法用在proxy环境中 22      * @param req 23      * @return 24      */ 25     public static String getRemoteAddr(HttpServletRequest req) { 26         String ip = req.getHeader("X-Forwarded-For"); 27         if(StringUtils.isNotBlank(ip)){ 28             String[] ips = StringUtils.split(ip,','); 29             if(ips!=null){ 30                 for(String tmpip : ips){ 31                     if(StringUtils.isBlank(tmpip)) 32                         continue; 33                     tmpip = tmpip.trim(); 34                     if(isIPAddr(tmpip) && !tmpip.startsWith("10.") && !tmpip.startsWith("192.168.") && !"127.0.0.1".equals(tmpip)){ 35                         return tmpip.trim(); 36                     } 37                 } 38             } 39         } 40         ip = req.getHeader("x-real-ip"); 41         if(isIPAddr(ip)) 42             return ip; 43         ip = req.getRemoteAddr(); 44         if(ip.indexOf('.')==-1) 45             ip = "127.0.0.1"; 46         return ip; 47     } 48  49     /** 50      * 判断是否为搜索引擎 51      * @param req 52      * @return 53      */ 54     public static boolean isRobot(HttpServletRequest req){ 55         String ua = req.getHeader("user-agent"); 56         if(StringUtils.isBlank(ua)) return false; 57         return (ua != null 58                 && (ua.indexOf("Baiduspider") != -1 || ua.indexOf("Googlebot") != -1 59                         || ua.indexOf("sogou") != -1 60                         || ua.indexOf("sina") != -1 61                         || ua.indexOf("iaskspider") != -1 62                         || ua.indexOf("ia_archiver") != -1 63                         || ua.indexOf("Sosospider") != -1 64                         || ua.indexOf("YoudaoBot") != -1 65                         || ua.indexOf("yahoo") != -1  66                         || ua.indexOf("yodao") != -1 67                         || ua.indexOf("MSNBot") != -1 68                         || ua.indexOf("spider") != -1 69                         || ua.indexOf("Twiceler") != -1 70                         || ua.indexOf("Sosoimagespider") != -1 71                         || ua.indexOf("naver.com/robots") != -1 72                         || ua.indexOf("Nutch") != -1 73                         || ua.indexOf("spider") != -1));     74     } 75  76     /** 77      * 获取COOKIE 78      *  79      * @param name 80      */ 81     public static Cookie getCookie(HttpServletRequest request, String name) { 82         Cookie[] cookies = request.getCookies(); 83         if(cookies == null)    return null; 84         for (Cookie ck : cookies) { 85             if (StringUtils.equalsIgnoreCase(name,ck.getName()))  86                 return ck;             87         } 88         return null; 89     } 90  91     /** 92      * 获取COOKIE 93      *  94      * @param name 95      */ 96     public static String getCookieValue(HttpServletRequest request, String name) { 97         Cookie[] cookies = request.getCookies(); 98         if(cookies == null)    return null; 99         for (Cookie ck : cookies) {100             if (StringUtils.equalsIgnoreCase(name,ck.getName())) 101                 return ck.getValue();            102         }103         return null;104     }105 106     /**107      * 设置COOKIE108      * 109      * @param name110      * @param value111      * @param maxAge112      */113     public static void setCookie(HttpServletRequest request, HttpServletResponse response, String name,114             String value, int maxAge) {115         setCookie(request,response,name,value,maxAge,true);116     }117 118     /**119      * 设置COOKIE120      * 121      * @param name122      * @param value123      * @param maxAge124      */125     public static void setCookie(HttpServletRequest request, HttpServletResponse response, String name,126             String value, int maxAge, boolean all_sub_domain) {127         Cookie cookie = new Cookie(name, value);128         cookie.setMaxAge(maxAge);129         if(all_sub_domain){130             String serverName = request.getServerName();131             String domain = getDomainOfServerName(serverName);132             if(domain!=null && domain.indexOf('.')!=-1){133                 cookie.setDomain('.' + domain);134             }135         }136         cookie.setPath("/");137         response.addCookie(cookie);138     }139     140     public static void deleteCookie(HttpServletRequest request,141             HttpServletResponse response, String name, boolean all_sub_domain) {142         setCookie(request,response,name,"",0,all_sub_domain);143     }144 145     /**146      * 获取用户访问URL中的根域名147      * 例如: www.dlog.cn -> dlog.cn148      * @param req149      * @return150      */151     public static String getDomainOfServerName(String host){152         if(isIPAddr(host))153             return null;154         String[] names = StringUtils.split(host, '.');155         int len = names.length;156         if(len==1) return null;157         if(len==3){158             return makeup(names[len-2],names[len-1]);159         }160         if(len>3){161             String dp = names[len-2];162             if(dp.equalsIgnoreCase("com")||dp.equalsIgnoreCase("gov")||dp.equalsIgnoreCase("net")||dp.equalsIgnoreCase("edu")||dp.equalsIgnoreCase("org"))163                 return makeup(names[len-3],names[len-2],names[len-1]);164             else165                 return makeup(names[len-2],names[len-1]);166         }167         return host;168     }169 170     /**171      * 判断字符串是否是一个IP地址172      * @param addr173      * @return174      */175     public static boolean isIPAddr(String addr){176         if(StringUtils.isEmpty(addr))177             return false;178         String[] ips = StringUtils.split(addr, '.');179         if(ips.length != 4)180             return false;181         try{182             int ipa = Integer.parseInt(ips[0]);183             int ipb = Integer.parseInt(ips[1]);184             int ipc = Integer.parseInt(ips[2]);185             int ipd = Integer.parseInt(ips[3]);186             return ipa >= 0 && ipa <= 255 && ipb >= 0 && ipb <= 255 && ipc >= 0187                     && ipc <= 255 && ipd >= 0 && ipd <= 255;188         }catch(Exception e){}189         return false;190     }191     192     private static String makeup(String...ps){193         StringBuilder s = new StringBuilder();194         for(int idx = 0; idx < ps.length; idx++){195             if(idx > 0)196                 s.append('.');197             s.append(ps[idx]);198         }199         return s.toString();200     }201 202     /**203      * 获取HTTP端口204      * @param req205      * @return206      * @throws MalformedURLException207      */208     public static int getHttpPort(HttpServletRequest req) {209         try {210             return new URL(req.getRequestURL().toString()).getPort();211         } catch (MalformedURLException excp) {212             return 80;213         }214     }    215 216     /**217      * 获取浏览器提交的整形参数218      * @param param219      * @param defaultValue220      * @return221      */222     public static int getParam(HttpServletRequest req, String param, int defaultValue){223         return NumberUtils.toInt(req.getParameter(param), defaultValue);224     }225     /**226      * 获取浏览器提交的整形参数227      * @param param228      * @param defaultValue229      * @return230      */231     public static long getParam(HttpServletRequest req, String param, long defaultValue){232         return NumberUtils.toLong(req.getParameter(param), defaultValue);233     }234     235     public static long[] getParamValues(HttpServletRequest req, String name){236         String[] values = req.getParameterValues(name);237         if(values==null) return null;238         return (long[])ConvertUtils.convert(values, long.class);239     }

 

转载于:https://www.cnblogs.com/smile361/archive/2013/01/11/2855845.html

你可能感兴趣的文章
FTP主动模式与被动模式说明
查看>>
php 编译常见错误
查看>>
MES架构
查看>>
【Python3 爬虫】15_Fiddler抓包分析
查看>>
高性能JavaScript-JS脚本加载与执行对性能的影响
查看>>
关于标签之间因为换行等问题造成的空白间距问题处理
查看>>
hdu 2767(tarjan)
查看>>
sklearn之分类模型混淆矩阵和分类报告
查看>>
MySQL各存储引擎
查看>>
项目--简单导出CSV文件
查看>>
Oracle session相关数据字典(一)
查看>>
织梦文章内容提取第一张或者多张图片输出
查看>>
C#用正则表达式 获取网页源代码标签的属性或值
查看>>
BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡(贪心)
查看>>
WCF(一) 简单的认知
查看>>
[MFC][DShow]简单例子
查看>>
降序排列
查看>>
Luogu P1141 01迷宫【搜索/dfs】By cellur925
查看>>
js onclick事件传参
查看>>
WiCloud 商业Wi-Fi管理平台
查看>>