教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Servlet&HTTP&Request

更新時間: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 getParameterMap() 獲取所有參數(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)前頁面



作者:傳智播客JavaEE培訓(xùn)學(xué)院

首發(fā):http://java.itcast.cn

0 分享到:
和我們在線交談!