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

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

Servlet&HTTP&Request

更新時(shí)間:2019年01月10日13時(shí)35分 來源:傳智播客 瀏覽次數(shù):

  Servlet體系結(jié)構(gòu)

  Servlet

  |

  GenericServlet -->抽象類

  |

  HttpServlet -->抽象類

  HTTP

  概念: hyper Text Transfer Protocol 超文本傳輸協(xié)議

  傳輸協(xié)議: 定義了客戶端和服務(wù)器端通信時(shí),發(fā)送數(shù)據(jù)格式

  特點(diǎn):

  基于TCP/IP的高級(jí)協(xié)議

  默認(rèn)端口號(hào):80

  基于請(qǐng)求響應(yīng)模型的,一次請(qǐng)求一次響應(yīng)

  無狀態(tài) :每次請(qǐng)求之間相互獨(dú)立,不能交互數(shù)據(jù)

  歷史版本

  1.0

  1.1: SPDY協(xié)議

  請(qǐng)求消息數(shù)據(jù)格式

  請(qǐng)求行

  請(qǐng)求方式 請(qǐng)求url 請(qǐng)求協(xié)議/版本

  請(qǐng)求方式

  GET

  請(qǐng)求參數(shù)在請(qǐng)求行,在url后

  請(qǐng)求的url有限制

  不安全

  POST

  請(qǐng)求參數(shù)在請(qǐng)求體中

  請(qǐng)求的url沒有限制

  相對(duì)安全

  請(qǐng)求頭

  請(qǐng)求頭名稱: 請(qǐng)求頭值

  User-Agent: 瀏覽器告訴服務(wù)器,我訪問你使用的瀏覽器版本信息

  可以在服務(wù)器端獲取該頭信息,解決瀏覽器兼容問題

  Referer

  告訴服務(wù)器,我(當(dāng)前請(qǐng)求)從哪里來

  作用

  防盜鏈:

  統(tǒng)計(jì)

  content-tyoe

  請(qǐng)求空行

  空行

  作為請(qǐng)求頭和請(qǐng)求體的分隔

  請(qǐng)求體

  請(qǐng)求參數(shù)(post)

  Request(發(fā)送數(shù)據(jù)到服務(wù)器)

  request和response對(duì)象是由服務(wù)器創(chuàng)建的.我們阿里使用它們

  request對(duì)象是獲取請(qǐng)求信息的,response對(duì)象是來設(shè)置響應(yīng)消息的

  request和response對(duì)象是由服務(wù)器(TomCat)在瀏覽器訪問服務(wù)器時(shí)創(chuàng)建的

  獲取請(qǐng)求消息數(shù)據(jù)

  獲取請(qǐng)求行數(shù)據(jù)

  方法

  獲取請(qǐng)求方式

  String getMethod()

  ***獲取虛擬路徑

  String getContextPath()

  獲取Servlet路徑

  String getServletPath()

  獲取get方式請(qǐng)求參數(shù):

  String getQueryString()

  ***獲取請(qǐng)求URI

  String getRequestURI()

  String getRequestURL()

  獲取請(qǐng)求頭數(shù)據(jù)

  String getHeader(String name)通過頭名稱獲取對(duì)應(yīng)的值

  Enumeration(String) getHeaderNames 獲取所有請(qǐng)求頭的名稱

  hub~

  獲取請(qǐng)求體數(shù)據(jù)

  請(qǐng)求體 :只有post請(qǐng)求方式中,才有請(qǐng)求體,在請(qǐng)求體中封裝了post請(qǐng)求的請(qǐng)求參數(shù)

  BufferedReader getR() 獲取字符輸入流

  InPutStream getInPutStream() 獲取字節(jié)輸入流

  獲取請(qǐng)求參數(shù)通用方式

  String getParameter(String name) 根據(jù)參數(shù)名稱獲取參數(shù)值

  String[] getgetParameterValues(String name) 根據(jù)參數(shù)名稱獲取參數(shù)值數(shù)組

  Enumeration(String) getParameterNames() 獲取所有請(qǐng)求的參數(shù)名稱

  Map getParameterMap() 獲取所有參數(shù)的Map集合

  中文亂碼問題

  get方式:tomcat已經(jīng)將get方式亂碼問題解決

  post方式: 會(huì)亂碼

  解決

  request.setCharacterEncoding(編碼格式)

  請(qǐng)求轉(zhuǎn)發(fā)

  一種在服務(wù)器內(nèi)部資源跳轉(zhuǎn)方式

  步驟

  通過request對(duì)象獲取請(qǐng)求轉(zhuǎn)發(fā)器

  RequstDispatcher getRequstDispatcher(String Path)

  使用RequstDispatcher對(duì)象調(diào)用forward方法實(shí)現(xiàn)資源跳轉(zhuǎn)

  RequstDispatcher.forward()

  特點(diǎn)

  瀏覽器地址欄路徑不變

  只能訪問服務(wù)器內(nèi)部資源

  請(qǐng)求轉(zhuǎn)發(fā)只有一次請(qǐng)求

  ps:服務(wù)器內(nèi)部資源千萬不要攜帶虛擬路徑

  共享數(shù)據(jù)

  域?qū)ο?/p>

  一個(gè)有作用范圍的對(duì)象,可以再范圍內(nèi)共享數(shù)據(jù)

  request域:代表一次請(qǐng)求的范圍.一般用于請(qǐng)求的多個(gè)資源中共享數(shù)據(jù)

  方法

  setAttitude(String name, Object obj) 存儲(chǔ)數(shù)據(jù)

  getAttitude(String name) 通過鍵獲得值

  removeAttitude(String name) 通過鍵刪除鍵值對(duì)

  獲取ServletContext

  request.getServletContext()

  絕對(duì)路徑

  基于服務(wù)器的絕對(duì)路徑

  /開頭的代表絕對(duì)路徑

  .或者..開頭代表相對(duì)路徑

  域?qū)ο?/p>

  ServletContext 服務(wù)器啟動(dòng)時(shí)創(chuàng)建,關(guān)閉時(shí)銷毀,僅限當(dāng)前項(xiàng)目

  HttpSession 一次回話

  HttpServletRequest 一次請(qǐng)求

  PageContext 當(dāng)前頁面



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

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

0 分享到:
和我們?cè)诰€交談!