RequestUtils 包装工具类

  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      * 设置COOKIE
108      * 
109      * @param name
110      * @param value
111      * @param maxAge
112      */
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      * 设置COOKIE
120      * 
121      * @param name
122      * @param value
123      * @param maxAge
124      */
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.cn
148      * @param req
149      * @return
150      */
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             else
165                 return makeup(names[len-2],names[len-1]);
166         }
167         return host;
168     }
169 
170     /**
171      * 判断字符串是否是一个IP地址
172      * @param addr
173      * @return
174      */
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 >= 0
187                     && 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 req
205      * @return
206      * @throws MalformedURLException
207      */
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 param
219      * @param defaultValue
220      * @return
221      */
222     public static int getParam(HttpServletRequest req, String param, int defaultValue){
223         return NumberUtils.toInt(req.getParameter(param), defaultValue);
224     }
225     /**
226      * 获取浏览器提交的整形参数
227      * @param param
228      * @param defaultValue
229      * @return
230      */
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     }

 

posted @ 2013-01-11 09:51  欢歌911  阅读(2893)  评论(0编辑  收藏  举报