Request與Response小知識

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");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章