(13)javaWeb中HttpServletRequest詳解


關於HTTP請求和響應,可以參考 HTTP協議 系列文章

導學,請求概述:

a,GET和POST請求報文格式:

b,常見的請求頭

 

 

 

在servlet中,相應的doGet方法和doSet方法中的request對象是域對象。后面會詳細解釋域對象。這里先看看request的常用方法。

1,設置字符編碼格式

request.setCharacterEncoding("UTF-8");

2,獲取請求方式

request.getMethod()

3,獲取請求行中 ,Http協議版本

request.getProtocol()

4,獲取請求的URL和URI

request.getRequestURL()

request.getRequestURI()

5,獲取請求頭字段名列表

request.getHeaderNames() 這里返回的是枚舉對象

6,獲取請求頭字段值

request.getHeader(headerName)

7,獲取請求參數名列表

request.getParameterNames() 這里返回的也是枚舉對象

8,獲取請求參數值

request.getParameter(parameterName)),這里只能獲取一個值,假如請求中有多個請求參數名相同,那么這里只獲取其中一個。

9,獲取某個請求參數的多個值

request.getParameterValues("userName") 這里返回一個數組String[] 假如有三個參數名都是userName,那么這里可以獲取有三個元素的數組。

10,獲取實體內容,這個適用於POST方法的請求

request.getInputStream()

 

詳細的使用參考代碼如下:

        public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}


	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		request.setCharacterEncoding("UTF-8");
		//獲取請求方法
		System.out.println("Method:"+request.getMethod());
		//請求的URL/URI
		System.out.println("URL:"+request.getRequestURL() + " URI:"+ request.getRequestURI());
		//請求的協議版本比如http1.1
		System.out.println("httpProtocolVersion:" + request.getProtocol());
		//請求頭字段名稱
		@SuppressWarnings("unchecked")
		Enumeration<String> enumeration = (Enumeration<String>)request.getHeaderNames();
		while (enumeration.hasMoreElements()) {
			String headerName = enumeration.nextElement();
			System.out.println("(Header) " + headerName + " : " + request.getHeader(headerName));
		}
		//獲取實體內容
		System.out.println("實體內容"+request.getInputStream());
		//請求參數
		@SuppressWarnings("unchecked")
		Enumeration<String> parameterEnumeration = request.getParameterNames();
		while (parameterEnumeration.hasMoreElements()) {
			String parameterName = parameterEnumeration.nextElement();
			System.out.println("(parameter) "+parameterName + " : " + request.getParameter(parameterName));
		}
		//獲取參數名相同的多個值。
		String[] userNameStrings = request.getParameterValues("userName");
		for (int i = 0; i < userNameStrings.length; i++) {
			System.out.println("(parameter) 多個值userName : " + userNameStrings[i]);
		}
		
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("it is OK");
		out.flush();
		out.close();
	}    

訪問的URL:

http://localhost:8080/Project/register?userName=zhangsan&password=123456&userName=yangzi

 console打印如下:

Method:GET
URL:http://localhost:8080/Project/register URI:/Project/register
httpProtocolVersion:HTTP/1.1
(Header) host : localhost:8080
(Header) accept : text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
(Header) upgrade-insecure-requests : 1
(Header) cookie : JSESSIONID=43E9798D7D35D49D6DA29F1B3954A243
(Header) user-agent : Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/604.4.7 (KHTML, like Gecko) Version/11.0.2 Safari/604.4.7
(Header) accept-language : zh-cn
(Header) accept-encoding : gzip, deflate
(Header) connection : keep-alive
實體內容org.apache.catalina.connector.CoyoteInputStream@6eac65f3
(parameter) userName : zhangsan
(parameter) password : 123456
(parameter) 多個值userName : zhangsan
(parameter) 多個值userName : yangzi

 


免責聲明!

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



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