Request與Response小知識
一、Request小知識
1、定義
HttpServletRequest對象,繼承ServletRequest接口,封裝HTTP請求消息
2、獲取請求行信息的相關方法
(1)String getMethod():獲取HTTP請求方式(GET/POST)
(2)String getRequestURI(): 獲取資源名稱,主機和端口後、請求參數之前的部分
(3)String getQueryString(): 參數部分,即?後的參數
(4)String getProtocol(): 獲取請求協議與版本
(5)String getContextPath():獲取請求URL中屬於WEB應用程序的路徑,以/開頭,結尾不含/,表示相對於整個WEB站點的根目錄
(6)String getContextPath():獲取Servlet名稱或Servlet所映射的路徑
(7)String getRemoteAddr():獲取請求客戶端的IP地址
(8)int getRemotePort():獲取請求客戶端網絡連接的端口號
(9)StringBuffer getRequestURL():獲取客戶端請求的完整URL,包括協議、服務器名、端口號、資源路徑等信息
3、獲取請求消息頭的相關方法
(1)String getHeader(String name):獲取一個指定頭字段的值
(2)Enumeration getHeaders(String name)
4、獲取請求參數
(1)String getParameter(String name):獲取某個指定名稱的參數值
(2)String[] getParameterValues(String name)
(3)Map getParameterMap():將請求消息中的所有參數名和值裝入Map對象中返回
5、重定向與轉發區別
(1)重定向的地址欄會發生變化,轉發的地址欄不變
(2)重定向兩次請求兩次響應,轉發一次請求一次響應
(3)重定向路徑需要加工程名,轉發的路徑不需要加工程名
(4)重定向可以跳轉到任意網站,轉發只能在服務器內部進行轉發
(5)request作用域數據在重定向不可以使用,轉發可以使用
二、Response小知識
1、定義
HttpServletResponse繼承ServletResponse接口,專門封裝HTTP響應消息
2、發送狀態碼相關的方法
(1)setStatus(int status):設置HTTP響應信息的狀態碼,並生成響應狀態行
(2)sendError(int sc):發送表示錯誤信息的狀態碼
3、發送響應消息頭相關的方法
(1)void addHeader(String name,String value)
(2)void setContentLength(int len):設置響應信息的實體內容的大小,單位字節
(3)void setContentType(String type):設置Servlet輸出內容的MIME類型
(4)void setCharacterEncoding(String charset):設置輸出內容使用的字符編碼
4、發送響應消息體相關的方法
(1)ServletOutputStream getOutputStream():字節輸出流,直接輸出字節數組中的二進制數據,輸出二進制格式的響應正文。
(2)PrintWriter getWriter():字符輸出流,輸出內容位字符文本的網頁文檔
5、文件下載原理
原理:需要指定文件的路徑,在HTTP協議中設置兩個響應消息頭
//設置接收程序處理數據的方式
Content-Disposition: attachment;filename=xxx
//設定實體內容的MIME類型
Content-Type: application/x-msdownload
6、中文輸出亂碼問題
(1)
//設置HttpServletResponse使用utf-8
response.setCharacterEncoding("utf-8");
//設置瀏覽器查看的編碼方式
response.setHeader("Content-Type","text/html;charset=utf-8")
(2)
response.setContentType("text/html;charset=utf-8");