複習:
HttpServletRequest
請求行:
* getMethod()
* getRquestURL()
* getRquestURI()
* getContextPath() --擷取虛拟目錄
* getServletPath()
* getQueryString --> get請求方式的參數
username=lucy&password=123
請求頭:
* getHeader(name)
請求體: 輸入流 post方式的參數
* getReader()
username=lucy&password=123
通用的擷取請求參數的方法:
getParameter(name)
String[] getParameterValues(name)
Map<String,Stirng[]> getParameterMap()
中文亂碼:
get的字元集: UTF-8
post的字元集: iso8859-1
request.setCharaterEncoding("utf-8")
____________________________________________
案例: 頁面注冊
步驟:
1.建立項目,導入html頁面,配置檔案,jar包
2.建立資料庫,和所需要的表
3.建立和資料庫對應的實體類
4.編寫工具類DruidUtils
5.建立UserDao,提供注冊方法
6.建立Servlet,使用BeanUtils工具類,簡化資料的封裝
BeanUtils - 封裝對象的工具類
* 作用: 用于封裝JavaBean的
* 使用:
1.導包
conmms-beanutils
conmms-collections
2.方法:
* populate(Object obj,Map map)
将map集合的鍵值對資訊,封裝到對應的JavaBean對象中
* setProperty()
* getProperty()
案例: 頁面登入
____________________________________________
ServletContext對象:
生命周期:
服務期開啟,伺服器結束
service -> doGet/doPost
Servlet的生命周期:
建立:預設第一次接收請求
銷毀:伺服器關閉

request作為域對象使用:
特點:
* 位址欄路徑不會發生改變
* 轉發隻能通路目前伺服器下的資源
* 轉發是一次請求,可以使用request域對象來共享資料
範圍: 一次請求
* 建立: 接受請求
* 銷毀: 請求結束
方法:
* setAttribute(String name,Object obj)
* getAttribute(String name)
* removeAttribute(String name)
作用:在請求轉發是進行資料的傳遞
使用場景: 通常是Servlet轉發到jsp時使用
一個Servlet事情做到一半時,需要轉發到另一個資源繼續完成這件事情 -> 使用轉發
____________________________________________
Response:響應
1.Response的組成部分:
1)響應行:狀态碼 + http協定
* 狀态碼:
* 1xx: 資訊狀态碼
* 傳回伺服器接收到的用戶端資訊,但是沒有接收完成任務 --> 了解
* 2xx: 成功狀态碼
* 200: 正常顯示
* 3xx: 重定向狀态碼
* 304: 通路緩存
* 302: 重定向
* 4xx: 用戶端錯誤狀态碼
* 404:(請求路徑沒有對應的資源)
資源未找到,路徑錯誤
* 405:請求方式沒有對應的doxxx方法
服務方法出錯(service/doGet/doPost)
* 5xx: 伺服器端錯誤狀态碼
* 500: 伺服器内容出現的異常,代碼錯誤
2)響應頭:Map存儲的資訊
* setHeader() -> 設定響應頭資訊
3)響應體:要顯示的界面
* 常用API:
* 擷取輸出流:
* 字元輸出流: getWriter()
* 位元組輸出流: getOutpuStream()
* 解決響應體亂碼問題:
* setContentType("text/html;charset=UTF-8")
2.重定向: 資源跳轉的方式
* 特定:
* 位址欄會發生變化
* 重定向可以通路其他伺服器的資源
* 重定向是兩次請求. 不能使用request域對象來共享資料
* 使用場景:
* 第一個資源已經做完了一件事情,需要做下一件事情
例如:注冊完成之後馬上進行登入操作
* 常用方法:
* 重定向的方法
sendRedirect("虛拟目錄+跳轉的資源路徑")
面試題: 重定向和轉發的差別?