当前位置 : 主页 > 编程语言 > java >

ParametersUtil

来源:互联网 收集:自由互联 发布时间:2021-06-28
gistfile1.txt import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.net.URLDecoder;import java.util.HashMap;import java.util.Iterator;import java.ut
gistfile1.txt
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;

import com.meallink.core.context.ThreadWebContextHolder;
import com.meallink.core.context.WebContext;
import com.meallink.core.exception.api.HttpMessageConverterException;
import com.meallink.core.json.ObjectFormHttpMessageConverter;

public final class ParametersUtil {
	
	private static final Logger logger = Logger.getLogger(ObjectFormHttpMessageConverter.class);
	
	private static final int BUFFER_LENGTH = 512;

	/**
	 * 从指定 HttpServletRequest 获取参数集合。
	 * 
	 * @param request
	 *            HTTP 请求。
	 * @return 参数集合。
	 */
	@SuppressWarnings("unchecked")
	public static Map
 
   getParameters(HttpServletRequest request) {
		WebContext webContext = ThreadWebContextHolder.getContext();
		if (null != webContext) {
			Map
  
    parameters = webContext.getParameters(); if (null == parameters) { // 如内容长度大于 0,则从流中取参数 if (request.getContentLength() > 0) { try { parameters = getParameters(request.getInputStream()); } catch (Exception e) { logger.error(e, e); throw new HttpMessageConverterException(e); } } // 否则,从 request 的参数表中取参数 else { parameters = getParameters(request.getParameterMap()); } webContext.setParameters(parameters); } return parameters; } return null; } public static Long eTagToVersion(String eTag) { return Long.parseLong(eTag, 16) + 99999999; } public static String versionToETag(Long version) { return Long.toString(version - 99999999, 16); } private static Map
   
     getParameters(InputStream inputStream) { // 将流读到 StringBuilder HashMap
    
      parameters = new HashMap
     
      (); StringBuilder builder = new StringBuilder(BUFFER_LENGTH); try { BufferedReader reader = new BufferedReader(new InputStreamReader( inputStream)); int charCount; char[] buffer = new char[BUFFER_LENGTH]; while ((charCount = reader.read(buffer, 0, buffer.length)) != -1) { builder.append(buffer, 0, charCount); } } catch (Exception e) { throw new HttpMessageConverterException(e); } // 从 StringBuilder 中取得参数 int elementSeparator = -1; int nameValueSeparator = -1; int length = builder.charAt(builder.length() - 1) == '&' ? builder .length() - 1 : builder.length(); for (int i = 0; i < length; i++) { char ch = builder.charAt(i); if ((ch == '&') || (i == length - 1)) { if (i == length - 1) { i++; } if ((nameValueSeparator != -1) && (nameValueSeparator + 1 < i)) { String parameterName = builder.substring( elementSeparator + 1, nameValueSeparator); String parameterValue = builder.substring( nameValueSeparator + 1, i); try { parameterValue = URLDecoder.decode(parameterValue, "utf-8"); } catch (UnsupportedEncodingException e) { throw new HttpMessageConverterException(e); } parameters.put(parameterName, parameterValue); } elementSeparator = i; nameValueSeparator = -1; } else if ((ch == '=') && (nameValueSeparator == -1)) { nameValueSeparator = i; } } return parameters; } private static Map
      
        getParameters(Map
       
         map) { HashMap
        
          parameters = new HashMap
         
          (); Iterator
          
           > iterator = map.entrySet() .iterator(); while (iterator.hasNext()) { Map.Entry
           
             entry = iterator.next(); parameters.put(entry.getKey(), entry.getValue()[0]); } return parameters; } }
           
          
         
        
       
      
     
    
   
  
 
上一篇:拼音比较
下一篇:NameUtil
网友评论