深刻理解ServletRequest與ServletResponse
請求和相應是Web交互最基本的模式,在Servlet中,分別用HttpServletRequest與HttpServletResponse來表示Http請求和響應。這兩個類均來自javax.servlet.http包,是J2EE Servlet與JSP規範的一部分,所以,談及
HttpServletRequest與HttpServletResponse的時候,其實都是和Servlet(包括JSP)有關的。與HTML、ASP、PHP是沒有關係的,你也沒法在HTML中使用它們。
下面是一個詳細過程:
1、ServletRequest
表明一個HTTP請求,請求在內存中是一個對象,這個對象是一個容器,能夠存放請求參數和屬性。
一、請求對象什麼時候被建立,當經過URL訪問一個JSP或者Servlet的時候,也就是當調用Servlet的service()、doPut()、doPost()、doXxx()方法時候的時候,執行Servlet的web服服務器就自動建立一個ServletRequest和ServletResponse的對象,傳遞給服務方法做爲參數。
二、請求對象由Servlet容器自動產生,這個對象中自動封裝了請求中get和post方式提交的參數,以及請求容器中的屬性值,還有http頭等等。當Servlet或者JSP獲得這個請求對象的時候,就知道這個請求時從哪裏發出的,請求什麼資源,帶什麼參數等等。
三、ServletRequest的層次結構
javax.servlet.ServletRequest
javax.servlet.http.HttpServletRequest
四、經過請求對象,能夠得到Session對象和客戶端的Cookie。
五、請求須要指定URL,瀏覽器根據URL生成HTTP請求併發送給服務器,請求的URL有必定的規範:
2、ServletResponse
也是由容器自動建立的,表明Servlet對客戶端請求的響應,響應的內容通常是HTML,而HTML僅僅是響應內容的一部分。
相應對象有如下功能:
一、向客戶端寫入Cookie
二、重寫URL
三、獲取輸出流對象,向客戶端寫入文本或者二進制數據
四、設置響應客戶端瀏覽器的字符編碼類型
五、設置客戶端瀏覽器的MIME類型。
3、GET與POST的本質區別
get請求的參數參數在url裏面,不安全,post請求的參數放在請求體中,安全。
4、認識MIME類型
參考資料:
HeadFirst Servlet&JSP