- POST獲取請求體
- 請求體中封裝了 POST請求的請求參數
- 獲取流對象 再從流對象中那數據 一種字節流 一種字符流 BufferedReader getReader()獲取字符輸入流 只能操作字符
- ServletInputStream getInputStream(); 獲取字節輸入流 可以操作所有類型數據
- 獲取請求參數通用方式
- String getParameter(String name); 根據參數名稱獲取參數值 username=zs&password=13
- String getParameterValues(String name);根據參數名稱獲取參數數組 hobby=ss&&hobby=sdad
- Enumeration<String> getHeaderNames(); 后去所有的請求的名稱
- Map<String,String[]>getParameterMap(); 獲取所有的參數的Map集合
- request請求轉發 是一中服務器內部資源跳轉的方式
- request.getRequestDispatcher("...").forward(request,response);
- 特點 瀏覽器地址欄路徑不發生變化
- 只能轉發到當前服務器內部資源中
- 轉發是一次請求
- 數據共享
- 域對象:一個有作用范圍的對象,在范圍內可以共享數據
- request域:代表一次請求的范圍,一般用於請求轉發的多個資源共享數據
- Servlet之間數據通信
- setAttribute(String name ,Object obj):存儲數據
- getAttitube(String name):通過鍵獲取值
- removeAttribute(String name);通過鍵移除鍵直對
- 獲取ServletContext
- ServletContext getServletContext();
- 對最后一個方法舉例
-
Map<String, String[]> parameterMap = request.getParameterMap();
Set<String> keySet = parameterMap.keySet();//獲取Keyset字符串數組
for (String name : keySet) {//循環Keyset
System.out.println(name); //輸出鍵名稱
String[] values = parameterMap.get(name);
for (String value : values) {
System.out.println(value);//輸出鍵值數組
}
System.out.println("--------");
}
}
- GET和POST中文亂碼問題 設置流的編碼 request.setCharacterEncoding("utf-8"); 即可解決 get不會亂碼 post 使用中文 要注意
注冊實例
<form action="/reDemo5" method="post">
<input type="text" placeholder="in" name="username"><br>
<input type="password" placeholder="out" name="password"><br>
<input type="submit" value="resgist">
</form>
BufferedReader br = request.getReader();
String line = null;
while ((line=br.readLine())!=null){
System.out.println(line);
}
}