Response&Request&Http

Response
1.響應(yīng)消息(response)組成:響應(yīng)行,響應(yīng)頭,響應(yīng)空行,響應(yīng)體
2.響應(yīng)行組成:協(xié)議/版本 響應(yīng)狀態(tài)碼 狀態(tài)碼描述
3.響應(yīng)狀態(tài)碼:1. 1xx:服務(wù)器就收客戶端消息,但沒有接受完成,等待一段時間后,發(fā)送1xx多狀態(tài)碼
2. 2xx:成功。代表:200
3. 3xx:重定向。代表:302(重定向),304(訪問緩存)
4. 4xx:客戶端錯誤。
* 代表:
* 404(請求路徑?jīng)]有對應(yīng)的資源)
* 405:請求方式?jīng)]有對應(yīng)的doXxx方法
5. 5xx:服務(wù)器端錯誤。代表:500(服務(wù)器內(nèi)部出現(xiàn)異常)
4.重定向方法:response.sendRedirect方法
特點:1. 地址欄發(fā)生變化
2. 重定向可以訪問其他站點(服務(wù)器)的資源
3. 重定向是兩次請求。不能使用request對象來共享數(shù)據(jù)
5.亂碼問題:response.setContentType("text/html;charset=utf-8");
6.響應(yīng)頭:1. Content-Type:服務(wù)器告訴客戶端本次響應(yīng)體數(shù)據(jù)格式以及編碼格式
2. Content-disposition:服務(wù)器告訴客戶端以什么格式打開響應(yīng)體數(shù)據(jù)

Request

  1. request對象和response對象的原理

    1. request和response對象是由服務(wù)器創(chuàng)建的。我們來使用它們
    2. request對象是來獲取請求消息,response對象是來設(shè)置響應(yīng)消息
  2. 其他功能:
    1. 獲取請求參數(shù)通用方式:不論get還是post請求方式都可以使用下列方法來獲取請求參數(shù)
    1. String getParameter(String name):根據(jù)參數(shù)名稱獲取參數(shù)值 username=zs&password=123
    2. String[] getParameterValues(String name):根據(jù)參數(shù)名稱獲取參數(shù)值的數(shù)組 hobby=xx&hobby=game
    3. Enumeration<String> getParameterNames():獲取所有請求的參數(shù)名稱
    4. Map<String,String[]> getParameterMap():獲取所有參數(shù)的map集合

         * 中文亂碼問題:
             * get方式:tomcat 8 已經(jīng)將get方式亂碼問題解決了
             * post方式:會亂碼
                 * 解決:在獲取參數(shù)前,設(shè)置request的編碼request.setCharacterEncoding("utf-8");
    
  3. 請求轉(zhuǎn)發(fā):一種在服務(wù)器內(nèi)部的資源跳轉(zhuǎn)方式
    1. 步驟:
    1. 通過request對象獲取請求轉(zhuǎn)發(fā)器對象:RequestDispatcher getRequestDispatcher(String path)
    2. 使用RequestDispatcher對象來進(jìn)行轉(zhuǎn)發(fā):forward(ServletRequest request, ServletResponse response)

         2. 特點:
             1. 瀏覽器地址欄路徑不發(fā)生變化
             2. 只能轉(zhuǎn)發(fā)到當(dāng)前服務(wù)器內(nèi)部資源中。
             3. 轉(zhuǎn)發(fā)是一次請求
    

4.* 域?qū)ο螅阂粋€有作用范圍的對象,可以在范圍內(nèi)共享數(shù)據(jù)
* request域:代表一次請求的范圍,一般用于請求轉(zhuǎn)發(fā)的多個資源中共享數(shù)據(jù)
* 方法:
1. void setAttribute(String name,Object obj):存儲數(shù)據(jù)
2. Object getAttitude(String name):通過鍵獲取值
3. void removeAttribute(String name):通過鍵移除鍵值對

5.獲取ServletContext:
* ServletContext getServletContext()

6.請求頭:

  • (*)String getHeader(String name):通過請求頭的名稱獲取請求頭的值
  1. User-Agent:瀏覽器告訴服務(wù)器,我訪問你使用的瀏覽器版本信息
    * 可以在服務(wù)器端獲取該頭的信息,解決瀏覽器的兼容性問題

         2. Referer:http://localhost/login.html
             * 告訴服務(wù)器,我(當(dāng)前請求)從哪里來?
                 * 作用:
                     1. 防盜鏈:
                     2. 統(tǒng)計工作:
    

HTTP
1.* 概念:Hyper Text Transfer Protocol 超文本傳輸協(xié)議
* 傳輸協(xié)議:定義了,客戶端和服務(wù)器端通信時,發(fā)送數(shù)據(jù)的格式
* 特點:
1. 基于TCP/IP的高級協(xié)議
2. 默認(rèn)端口號:80
3. 基于請求/響應(yīng)模型的:一次請求對應(yīng)一次響應(yīng)
4. 無狀態(tài)的:每次請求之間相互獨立,不能交互數(shù)據(jù)

  • 請求方式:
    * HTTP協(xié)議有7中請求方式,常用的有2種
    * GET:
    1. 請求參數(shù)在請求行中,在url后。
    2. 請求的url長度有限制的
    3. 不太安全
    * POST:
    1. 請求參數(shù)在請求體中
    2. 請求的url長度沒有限制的
    3. 相對安全
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容