Request和response對象原理:

1.Tomcat創建Servlet對象,調用init方法

2.Tomcat創建request,和response對象並且傳遞給service方法,作為參數 ,然後執行service方法
3. 使用request對象獲取請求數據,然後我們將響應內容數據設置在response對象中 Tomcat從response對象中獲取數據,處理完,響應給瀏覽器

request對象和response對象的作用

request是用來獲取請求消息的,response對象是用來設置響應消息的

2. request對象的繼承體系

ServletRequest—接口
HttpServletRequest—接口
org.apache.catalina.connector.RequestFacade 類(tomcat)實現類

3. request的功能

  1. 獲取請求行數據
a.獲取請求方式
	String getMethod()
b.獲取虛擬目錄
	String getContextPath()
c.獲取Servlet的路徑
	String getServlet Path()
d.獲取get方式的請求參數
	String getQueryString()
e.獲取URI
	String getRequestURI()虛擬目錄加servlet的資源路徑
f.獲取URL
	String getRequestURL() 整個的請求地址
g.獲取協議版本
	String getProtocol()
h.獲取客户機的IP地址
	String getRemoteAddr()
  1. 獲取請求頭數據
a.	
	String getHeader(String name)通過請求頭的名稱來獲取請求頭的值
b.	
	Enumeration<String> getHeaderNames():自動獲取所有請求頭的名稱
  1. 獲取請求體數據
只有POST方式才有請求體,在請求體中封裝了post請求體的參數 
a.	獲取流對象
	BufferedReader getReader():獲取字符輸入流,只能操作字符數據
	ServletInputStream getInputSteam:獲取字節輸入流對象,可以操作所有的數據類型
b.	再從流對象中拿數據
  1. 中文亂碼問題
Get方式:tomcat8已經將get方式亂碼問題解決了
Post方式會亂碼:
		在獲取參數之前,設置request的編碼格式為request.setCharacterEncoding(“utf-8”)
  1. 請求轉發:
    一種在服務器內部的資源跳轉方式
a.	
通過request對象獲取請求轉發器對象
	Request.RequestDispatcher(String path)
b.	
使用轉發器對象調用轉發
	轉發器對象.forward(ServletReaquest request,ServletResponse response)
c.	請求轉發的特點
瀏覽器地址欄路徑不發生變化
只能轉發到當前服務器內部資源中
轉發是一次請求
  1. 共享數據
域對象:
	一個有作用範圍的對象,可以在範圍內共享數據
Request域對象:
	代表一次請求的範圍,一般用於請求轉發的多個資源中共享數據
方法:
	1.	void setAttribute(String name,Object obj)存儲數據
	2.	Object getAttribute(String name)通過鍵來獲取
	3.	Void removeAttribute(String name)通過鍵來移除鍵值對