* Request 和 Response 原理: * request對象和response對象由伺服器創建,我們只需要在service方法中使用這兩個對象即可 * 繼承體繫結構: ServletRequest <--繼承-- HttpServletRequest <--實現--- RequestFa
* Request 和 Response 原理:
* request對象和response對象由伺服器創建,我們只需要在service方法中使用這兩個對象即可
* 繼承體繫結構:
ServletRequest <--繼承-- HttpServletRequest <--實現--- RequestFacade
* Response:封裝響應消息,設置響應消息
* 設置響應行:HTTP/1.1 200 ok
* setStatus(int code):設置響應狀態碼
* 演示重定向:302
//簡化版的重定向
response.sendRedirect("http://192.168.1.100:8080/zxc/one");
* 實現原理
//1.設置響應狀態碼為 302
response.setStatus(302);
//2.設置響應頭 location
response.setHeader("location", "http://192.168.1.100:8080/zxc/one");
* 重定向的特點:
1.地址欄發生變化
2.兩次請求,兩次響應
3.可以訪問外部的站點
* 設置響應頭:
* setHeader(String name,String value):
* setDateHeader(String name, long date)
* setIntHeader(String name, int value)
* 設置響應體:
* getOutputStream():發送位元組數據
* 驗證碼:
* 防止惡意註冊
* getWriter():發送字元數據
* 發送中文數據時,需要在獲取流之前設置編碼方式,並且要告訴客戶端瀏覽器,伺服器使用的編碼方式
//簡化版設置編碼的方式
response.setContentType("text/html;charset=utf-8");
* Request:封裝請求消息,獲取請求消息
* 獲取請求消息:
* 獲取請求行:GET /day08/req1?name=zs HTTP/1.1
* getMethod():獲取請求方式
* getContextPath():獲取虛擬目錄
* getRequestURI():獲取URI(統一資源標識符) /day07/one /one
* getRequestURL():獲取URL(統一資源定位符) http://localhost:8080/day07/one
* getRemoteAddr():獲取客戶機的IP地址
* getQueryString():get方式獲取請求參數
* 獲取請求頭:
* String getHeader(String name)
* long getDateHeader(String name)
* int getIntHeader(String name)
* 獲取請求體:封裝post請求參數數據
* BufferedReader getReader():
* ServletInputStream getInputStream():
* 通用的獲取請求參數的方式:
* String getParameter(String name):根據鍵名獲取值
* String[] getParameterValues(String name):根據鍵名獲取值的數組,一般用於覆選框
* Map<String,String[]> getParameterMap():獲取所有參數的map集合
* Enumeration getParameterNames():獲取所有的鍵名枚舉
* 請求參數中文亂碼問題:
1.通用:
//1.解碼 iso
byte[] bytes = username.getBytes("iso-8859-1");
//2.編碼 utf-8
username = new String(bytes, "utf-8");
2.post專用
//設置輸入流的編碼為 utf-8
request.setCharacterEncoding("utf-8");
* 域對象:代表一次請求
* 請求轉發:
* 轉發特點:
1.地址欄不發生變化
2.一次請求,一次響應
3.不能轉發外部站點
* 重定向的特點:
1.地址欄發生變化
2.兩次請求,兩次響應
3.可以訪問外部的站點