Java得到GET和POST請求URL和參數列表


一 獲取URL:
getRequestURL()

二 獲取參數列表:

1.getQueryString()

只適用於GET,比如客戶端發送http://localhost/testServlet?a=b&c=d&e=f,通過request.getQueryString()得到的是a=b&c=d&e=f.


2.getParameter()
GET和POST都可以使用
但如果是POST請求要根據<form>表單提交數據的編碼方式來確定能否使用.
當編碼方式是(application/x- www-form-urlencoded)時才能使用.
這種編碼方式(application/x-www-form-urlencoded)雖然簡單,但對於傳輸大塊的二進制數據顯得力不從心.
對於傳輸大塊的二進制數這類數據,瀏覽器采用了另一種編碼方式("multipart/form-data"),這時就需要使用下面的兩種方法.

3.getInputStream()
4.getReader()
上面兩種方法獲取的是Http請求包的包體,因為GET方式請求一般不包含包體.所以上面兩種方法一般用於POST請求獲取參數.

需要注意的是:
request.getParameter()、 request.getInputStream()、request.getReader()這三種方法是有沖突的,因為流只能被讀一次。
比如:
當form表單內容采用 enctype=application/x-www-form-urlencoded編碼時,先通過調用request.getParameter()方法得到參數后,
再調用request.getInputStream()或request.getReader()已經得不到流中的內容,
因為在調用 request.getParameter()時系統可能對表單中提交的數據以流的形式讀了一次,反之亦然。

當form表單內容采用 enctype=multipart/form-data編碼時,即使先調用request.getParameter()也得不到數據,
所以這時調用request.getParameter()方法對 request.getInputStream()或request.getReader()沒有沖突,
即使已經調用了 request.getParameter()方法也可以通過調用request.getInputStream()或request.getReader()得到表單中的數據,
而request.getInputStream()和request.getReader()在同一個響應中是不能混合使用的,如果混合使用就會拋異常。

 
分類:  Java
/**
	 * 獲取HTTP POST數據
	 * 
	 * @param request
	 * @throws IOException
	 */
	public static String getPostParam(HttpServletRequest request) {
		String sret = null;
		String ContentType = "";
		
		ContentType = request.getHeader("Content-Type");
		if(ContentType.equalsIgnoreCase("application/x-www-form-urlencoded")) {
			Map<String, String[]> params = request.getParameterMap();
			String queryString = "";
			for (String key : params.keySet()) {
				String[] values = params.get(key);
				for (int i = 0; i < values.length; i++) {
					String value = values[i];
					queryString += key + "=" + value + "&";
				}
			}

			if (queryString.length() > 1) {
				// 去掉最后一個空格
				queryString = queryString.substring(0, queryString.length() - 1);
			}
			
			sret = queryString;
			
		}else if(ContentType.equalsIgnoreCase("multipart/form-data")) {
			try {
				StringBuffer info = new StringBuffer();
				ServletInputStream in = request.getInputStream();
				BufferedInputStream buf = new BufferedInputStream(in);
				byte[] buffer = new byte[1024];
				int iRead;
				while ((iRead = buf.read(buffer)) != -1) {
					info.append(new String(buffer, 0, iRead, "UTF-8"));
					sret = info.toString();
				}
			} catch (UnsupportedEncodingException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}else {
			
		}
		
		return sret;
	}

	
	

	public static String getGetParam(HttpServletRequest request) {
		String sret = null;
		String queryString = null;
		
		queryString = request.getQueryString();
		sret = queryString;
		return sret;
	}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM