更新時間:2019年01月10日13時35分 來源:傳智播客 瀏覽次數(shù):
Servlet體系結(jié)構(gòu)
Servlet
|
GenericServlet -->抽象類
|
HttpServlet -->抽象類
HTTP
概念: hyper Text Transfer Protocol 超文本傳輸協(xié)議
傳輸協(xié)議: 定義了客戶端和服務(wù)器端通信時,發(fā)送數(shù)據(jù)格式
特點:
基于TCP/IP的高級協(xié)議
默認(rèn)端口號:80
基于請求響應(yīng)模型的,一次請求一次響應(yīng)
無狀態(tài) :每次請求之間相互獨立,不能交互數(shù)據(jù)
歷史版本
1.0
1.1: SPDY協(xié)議
請求消息數(shù)據(jù)格式
請求行
請求方式 請求url 請求協(xié)議/版本
請求方式
GET
請求參數(shù)在請求行,在url后
請求的url有限制
不安全
POST
請求參數(shù)在請求體中
請求的url沒有限制
相對安全
請求頭
請求頭名稱: 請求頭值
User-Agent: 瀏覽器告訴服務(wù)器,我訪問你使用的瀏覽器版本信息
可以在服務(wù)器端獲取該頭信息,解決瀏覽器兼容問題
Referer
告訴服務(wù)器,我(當(dāng)前請求)從哪里來
作用
防盜鏈:
統(tǒng)計
content-tyoe
請求空行
空行
作為請求頭和請求體的分隔
請求體
請求參數(shù)(post)
Request(發(fā)送數(shù)據(jù)到服務(wù)器)
request和response對象是由服務(wù)器創(chuàng)建的.我們阿里使用它們
request對象是獲取請求信息的,response對象是來設(shè)置響應(yīng)消息的
request和response對象是由服務(wù)器(TomCat)在瀏覽器訪問服務(wù)器時創(chuàng)建的
獲取請求消息數(shù)據(jù)
獲取請求行數(shù)據(jù)
方法
獲取請求方式
String getMethod()
***獲取虛擬路徑
String getContextPath()
獲取Servlet路徑
String getServletPath()
獲取get方式請求參數(shù):
String getQueryString()
***獲取請求URI
String getRequestURI()
String getRequestURL()
獲取請求頭數(shù)據(jù)
String getHeader(String name)通過頭名稱獲取對應(yīng)的值
Enumeration(String) getHeaderNames 獲取所有請求頭的名稱
hub~
獲取請求體數(shù)據(jù)
請求體 :只有post請求方式中,才有請求體,在請求體中封裝了post請求的請求參數(shù)
BufferedReader getR() 獲取字符輸入流
InPutStream getInPutStream() 獲取字節(jié)輸入流
獲取請求參數(shù)通用方式
String getParameter(String name) 根據(jù)參數(shù)名稱獲取參數(shù)值
String[] getgetParameterValues(String name) 根據(jù)參數(shù)名稱獲取參數(shù)值數(shù)組
Enumeration(String) getParameterNames() 獲取所有請求的參數(shù)名稱
Map
中文亂碼問題
get方式:tomcat已經(jīng)將get方式亂碼問題解決
post方式: 會亂碼
解決
request.setCharacterEncoding(編碼格式)
請求轉(zhuǎn)發(fā)
一種在服務(wù)器內(nèi)部資源跳轉(zhuǎn)方式
步驟
通過request對象獲取請求轉(zhuǎn)發(fā)器
RequstDispatcher getRequstDispatcher(String Path)
使用RequstDispatcher對象調(diào)用forward方法實現(xiàn)資源跳轉(zhuǎn)
RequstDispatcher.forward()
特點
瀏覽器地址欄路徑不變
只能訪問服務(wù)器內(nèi)部資源
請求轉(zhuǎn)發(fā)只有一次請求
ps:服務(wù)器內(nèi)部資源千萬不要攜帶虛擬路徑
共享數(shù)據(jù)
域?qū)ο?/p>
一個有作用范圍的對象,可以再范圍內(nèi)共享數(shù)據(jù)
request域:代表一次請求的范圍.一般用于請求的多個資源中共享數(shù)據(jù)
方法
setAttitude(String name, Object obj) 存儲數(shù)據(jù)
getAttitude(String name) 通過鍵獲得值
removeAttitude(String name) 通過鍵刪除鍵值對
獲取ServletContext
request.getServletContext()
絕對路徑
基于服務(wù)器的絕對路徑
/開頭的代表絕對路徑
.或者..開頭代表相對路徑
域?qū)ο?/p>
ServletContext 服務(wù)器啟動時創(chuàng)建,關(guān)閉時銷毀,僅限當(dāng)前項目
HttpSession 一次回話
HttpServletRequest 一次請求
PageContext 當(dāng)前頁面
首發(fā):http://java.itcast.cn