request 文字 學習筆記
1)取得請求頭相關的信息
*a)request.getHeader(String):String
b)request.getHeaders(String):Enumeration
c)getHeaderNames():Enumeration
*2 獲取請求參數的值
2)取得請求體相關的信息
a)request.getParameter(String):String
b)request.getParameterValues(String):String[]
註意:在GET請求方式下,如果參數不一致,返回null,可能出現空指針異常
c)BeanUtils框架能夠自動將String參數設置到JavaBean對象中
2)String->8種基本類型自動轉換,非8種基本類型可以註冊轉換器材
3)String或String[]類型的參數自動感知裝配
*3 request應用
1)防盜鏈
判段某個頁面來自於何方,即referer請求頭
2)收集表單數據
a)項目中,用戶請求的參數,最好做null或空串的二次判段
3)中文亂碼
a)POST方式下亂碼產生的原因:瀏覽器發送的編碼方式與Request對象的編碼方式不一致
解決方案:request.setCharacterEncoding("UTF-8),該方法只能解析請求體中的亂碼方式,除此之外,無力解決
c)如果用戶是get方式提交,在轉發和重定向情況下,都是get請求
d)405:本身請求是get請求,但未在servlet內提供對應的doGet()方法, post也是類似
*4 再談MVC設計模式
1)如果嚴格按照MVC思想的話,瀏覽器首頁訪問的是控制器,然後再由控制器轉發到視圖
2)位於WEB-INF/目錄下的資源,客戶端無法直接訪問,只能通過服務端轉發進入
3)request對象也可用於資源的轉發
request
.getRequestDispatcher("/WEB-INF/success.html")
4)通過正則表達式驗證中文:[\u4E00-\uFA29]+
5)對於重定向而言,前後的二個Request域對象不同,如果取值不到,返回"null",不會報錯
5 request的細節
1)轉發是通過RequestDispatcher對象的forward(request,response)方法完成的
2)forward()方法之前的輸出,如果是輸出到緩沖區,再轉發到其他Servlet,那麽原緩沖區的數據忽略不計
3)forward()方法之前的輸出,如果真正輸出到瀏覽器,再轉發到其他Servlet,再轉發到其他Servlet代碼忽略不計
4)forward()方法之前的輸出,如果是對響應頭的設置,會保留到轉發的其他Servlet中
*6 重定向和轉發區別
1)轉發只能相對於當前web應用而言,不能轉發到其它web應用
重定向可以在當前web應用之外的其它web應用重寫向資源
2)轉發/表示當前web應用
重定向/表示web服務器的根目錄,即webapps目錄
3)轉發時,瀏覽器地址欄不變
重定向時,瀏覽器地址欄改變
4)轉發是服務端的內部行為,瀏覽器不知
重定向是瀏覽器和服務端的共同行為,瀏覽器必知
5)轉發時二個Servlet共享request域對象
重定向時二個Servlet獨享request域對象
6)request具有二義性:
a)請求對象
b)域對象
7 include包含
1)需要使用Servlet包含相同的頁面輸出時,類似於函數調用
8 會話
1)用戶輸出URL地址,有效訪問某個網站,在該網站上的一系列有效操作,隨後關閉瀏覽器的整個過程,叫一次會話
2)會話主要解決服務端如何保存每個客戶端對應的私有信息。
3)會話主要有二種:
a)Cookie技術[客戶端技術]
b)Session技術
*9 Cookie
1)Cookie是客戶端的技術
2)每次發送請求時,客戶端都會帶上各自已的不同Cookie到服務端,服務端一解析Cookie,就知道是哪個客戶端發送過來的信息
3)一個Cookie只能存儲一種類型的信息
4)更新某個名的Cookie,即向瀏覽器寫一個相同名的Cookie
5)Cookie一定要設置一個有效時間,如果不設置的話,默認該請求訪問結束後,該Cookie自動銷毀,用專業名詞來講,
Cookie的默認有效期時一個有效會話結束
request 文字 學習筆記