欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Request 对象

程序员文章站 2024-02-03 11:21:40
...

1、利用request对象获取客户端IP

     如何在request中获取用户的真实IP对于经过F5代理的应用系统,request.getRemoteAddr()得到的IP为F5的地址,无法获取用户的真实IP。获取用户真实IP的方法如下:

1、在F5中进行配置:将HTTP Profile改为http-forwards。这样,在HTTP头信息中,增加了X-FORWARDED-FOR信息。用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。

2、修改取IP的方法:
    String IP = request.getHeader("x-forwarded-for");
        if(IP == null || IP.length() == 0) { 
        IP = request.getRemoteAddr(); 
    }

3、如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢? 
  答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。 
  如: 
  X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100 
  用户真实IP为: 192.168.1.110

 

2、request对象获取页面所有参数、参数值

//request.getParameterMap()得到页面的键值对集合(返回值是map集合) 
Map YeMianMap =  request.getParameterMap();
//为页面参数创建迭代器
Iterator itar = YeMianMap.keySet().iterator();
while (itar.hasNext()) {
	//根据参数,取参数的值
	String zhi = request.getParameter(itr.next().toString());
	if(null != zhi){
		//将页面传入的值拼接
		str.append(zhi.toString());
		str.append("_");
	}
}

 

3、将页面传送的参数、值键值对重新封装

    在java web项目中虽然可以通过request.getParameterMap()很轻松的获得参数Map,但得到的Map和普通Map是不一样的,是被锁定的,不能像操作常规Map那样进行put、get等操作.
    该方法将得到参数Map返回为可操作的普通Map
 /**
  * 从request中获得参数Map,并返回可读的Map
  * @param request
  * @return
  */
 @SuppressWarnings("unchecked")
 public static Map getParameterMap(HttpServletRequest request) {
  // 参数Map
  Map properties = request.getParameterMap();
  // 返回值Map
  Map returnMap = new HashMap();
  Iterator entries = properties.entrySet().iterator();
  Map.Entry entry;
  String name = "";
  String value = "";
  while (entries.hasNext()) {
   entry = (Map.Entry) entries.next();
   name = (String) entry.getKey();
   Object valueObj = entry.getValue();
   if (null == valueObj) {
    value = "";
   } else if (valueObj instanceof String[]) {
    String[] values = (String[]) valueObj;
    for (int i = 0; i < values.length; i++) {
     value = values[i] + ",";
    }
    value = value.substring(0, value.length() - 1);
   } else {
    value = valueObj.toString();
   }
   returnMap.put(name, value);
  }
  return returnMap;
 }

 

 

   

相关标签: Request