Servlet-HttpServletRequest對象

請求對象:

如前幾篇博客所述,請求綁定servlet並作出相應的響應。web容器在接收到瀏覽器請求後,會將相應的請求封裝成對象(HttpServletRequest)傳遞給相應的servlet做進一步處理。
在這裏插入圖片描述

對象分析:

HeepServletRequest類提供了大量對請求信息進行操作的方法,具體內容可參考Java API。這裏僅淺析幾個方法,從而進一步理解servlet處理流程。

請求參數:

先看下幾個HttpServletRequest提供的幾個方法

名稱 解釋 返回參數
getParameter(“name”) 返回指定name的對應值 String
getParameterValues(“name”) name存在多個對應值,返回多個值 String[]
getParameterNames() 獲取全部請求參數 Enumration
getParameterMap() 鍵值對方式獲取參數 Map< String, String[]>

name=指定參數名稱
在這裏插入圖片描述
實踐一下:
嘗試HttpServletRequest提供的不同方法,響應輸出相應的參數。以下按上述表格順序依次實踐!

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
5.
在這裏插入圖片描述

代碼示例:

@WebServlet("/change")
public class Demo extends HttpServlet {
 	private static final long serialVersionUID = 1L;
 	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
  	PrintWriter p = response.getWriter();
  	//獲取指定屬性的請求參數值
  	//String t = request.getParameter("submit");
//  	String t = request.getParameter("input");//多個值只輸出第一個
// 	p.println(t);
  	//獲取相同請求屬性下的所有參數值
//  	String[] values = request.getParameterValues("input");
//  	for(String x: values)
//   		p.println(x + " ");
  	//獲取所有請求參數
//  	Enumeration<String> e = request.getParameterNames(); 
//  	int count = 0;
//  	while(e.hasMoreElements()) {
//   		String te = e.nextElement();
//   		p.println(te);
//   		count++;
//  	}
//  	System.out.println(count);
  	//鍵值對方式獲取
  	Map<String, String[]> m = request.getParameterMap();
  	String[] valueM = m.get("input");
  	for(String x: valueM)
   		p.println(x + " ");
 	}
}

前端代碼:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
 	<form action="random" method="post">
  		<input type="submit" name="submit" value="submit">
  		<input name="output">
  		<input name="input">
  		<input name="input">
 	</form>
</body>
</html>

以下代碼設置請求方式,項目默認設置GET。

<form action="random" method="post">

若項目未顯示設置post請求方式,或者後端代碼無doGet()方法,則會出現以下錯誤。
在這裏插入圖片描述

標頭請求參數:

HttpServletRequest類提供了類似獲取請求參數的方式獲取標頭參數,具體可參考API文獻。

@WebServlet("/Demo")
public class Demo extends HttpServlet {
 	private static final long serialVersionUID = 1L;
 	protected void doGet(HttpServletRequest request, HttpServletResponse response)
   	throws ServletException, IOException {
  		PrintWriter p = response.getWriter();
  		Collections.list(request.getHeaderNames()).forEach(name -> {
   			p.printf("%s: %s<br>", name, request.getHeader(name));
  		});
 	}
}

結果打印:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章