从 request 中获取请求参数

从 request 中获取请求参数有两种情况

1.从 get 方法中获取请求参数

get 方法的请求参数存放在 getQueryString() 方法中,不需要从 getInputStream() 中获取

2.从 post 方法中获取请求参数

post 方法的参数存放在 流当中需要从 getInputStream() 中获取。


package com.dada.test;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;


   
/**      
 * request 对象的相关操作
 * @author zhangtengda        
 * @version 1.0      
 * @created 2015年5月2日 下午8:25:43     
 */       
public class RequestUtils {
	   
	/**      
	 * 描述:获取 request 中请求的内容
	 * <pre>
	 * 举例:
	 * </pre>
	 * @param request
	 * @return
	 * @throws IOException      
	 */
	public static String getRequestQueryString(HttpServletRequest request)
			throws IOException {
		String submitMehtod = request.getMethod();
		// GET
		if (submitMehtod.equals("GET")) {
			return new String(request.getQueryString().getBytes("iso-8859-1"),"utf-8");
		// POST
		} else {
			return getRequestPostStr(request);
		}
	}
	
	/***
	 * 获取 request 中 json 字符串的内容
	 * 
	 * @param request
	 * @return : <code>byte[]</code>
	 * @throws IOException
	 */
	public static String getRequestJsonString(HttpServletRequest request)
			throws IOException {
		String submitMehtod = request.getMethod();
		// GET
		if (submitMehtod.equals("GET")) {
			return new String(request.getQueryString().getBytes("iso-8859-1"),"utf-8").replaceAll("%22", "\"");
		// POST
		} else {
			return getRequestPostStr(request);
		}
	}
	   
	/**      
	 * 描述:获取 post 请求的 byte[] 数组
	 * <pre>
	 * 举例:
	 * </pre>
	 * @param request
	 * @return
	 * @throws IOException      
	 */
	public static byte[] getRequestPostBytes(HttpServletRequest request)
			throws IOException {
		int contentLength = request.getContentLength();
		if(contentLength<0){
			return null;
		}
		byte buffer[] = new byte[contentLength];
		for (int i = 0; i < contentLength;) {

			int readlen = request.getInputStream().read(buffer, i,
					contentLength - i);
			if (readlen == -1) {
				break;
			}
			i += readlen;
		}
		return buffer;
	}
	
	/**      
	 * 描述:获取 post 请求内容
	 * <pre>
	 * 举例:
	 * </pre>
	 * @param request
	 * @return
	 * @throws IOException      
	 */
	public static String getRequestPostStr(HttpServletRequest request)
			throws IOException {
		byte buffer[] = getRequestPostBytes(request);
		String charEncoding = request.getCharacterEncoding();
		if (charEncoding == null) {
			charEncoding = "UTF-8";
		}
		return new String(buffer, charEncoding);
	}
	
	
}


你可能感兴趣的:(从 request 中获取请求参数)