Java web學習課程之Request和Response
request和response
l HttpServletRequest
l 請求轉發
l HttpServletResponse
l 請求重定向
- 請求流程
每次請求service(),都會由容器建立一個新的物件。
首先使用者向Servlet發出請求,然後由tomcat伺服器建立request和response兩個物件,然後將兩個新物件傳遞給servlet,然後servlet用response返回響應,瀏覽器解析response響應。
- Servlet物件的比較
① request和response在每一次訪問時都被建立,由tomcat伺服器建立
② servlet只會被建立一次
③ ServletConfig會為每一個servlet建立一個Config物件,且由servlet維護。ServletConfig屬於成員變數
④ ServletContext物件,是這個web專案就有一個此變數,屬於全域性變數,整個專案都可以被訪問到
- HTTPServletRequest
是ServletRequest的子介面,用於封裝HTTP請求訊息。
- Request功能
① 功能
l 接收使用者的引數
l 接收使用者的所有請求頭資訊
l 轉發、包含
l 作為域物件也可以存放資料
② 方法
² getParameter(String)方法:根據名字獲取一個引數,返回值型別為String
² getParameterValues(String)方法:根據名字獲取一組相關資料,返回型別為String[]
- 請求轉發
① 轉發:是將請求在伺服器內部叫個另一個元件再去執行,同時共享request中的資料,其特點有:
l 位址列不會發生改變
l 在最終servlet中,request物件和中轉的request物件是同一個物件,資料不會發生改變
l 請求轉發:“/”代表當前web應用根目錄即http://localhost:8080/Servlet1115
② 請求域屬性
儲存在ServletRequest物件中的屬性稱之為請求域屬性,屬於同一個請求的多個處理模組之間可以通過請求域屬性來傳遞物件資料。
相關方法有:
l setAttribute()方法
l getAttribute()方法
l removeAttribute()方法
- HTTPServletResponse
是ServletResponse介面的子介面,專門用於http協議,用於封裝http響應訊息
- Response功能
① 功能
l 設定響應內容:給使用者輸出html資料
l 設定響應頭
l 重定向
② 方法
用於字元流輸出,方法:resp.getWriter()
PrintWriter out = response.getWriter();
out.write("名稱:" + name);
- 重定向
n 指的是一個web資源受到客戶端請求後,通知客戶端取訪問另一個web資源(例如百度)
n “/”代表當前web應用站點http://localhost:8080
n 瀏覽器會向伺服器傳送兩次請求,即有兩個request/response
n 瀏覽器地址會發生變化
n 不會共享request中的資料
n 執行重定向的程式碼為302
- 重定向與轉發的區別
①請求轉發只轉發到當前web應用下,請求重定向轉發到另一個web站點;
②請求轉發只發送了一次請求,重定向傳送了兩次請求。請求轉發的位址列還是初次請求的位址列,重定向的位址列是第二次請求的位址列,與之同理,重定向的request不是同一次request;