Http協議 && Response

    1:Http協議:響應消息
    2.Response對象
    3.ServletContext對象
    
## HTTP協議:
    1.請求消息:客戶端發送給服務器端的數據
        * 數據格式:
            1.請求行
            2.請求圖
            3.請求空行
            4.請求體
    2.響應消息:服務器端發送給客戶端的數據
        * 數據格式:
            1.響應行
                1.組成:協議/版本 響應狀態碼 狀態碼描述
                2.響應狀態碼:服務器告訴客戶端瀏覽器本次請求和相應的一個狀態
                    1. 狀態碼都是三位數字
                    
                    2. 分類:
                        1. 1xx:服務器接受客戶端消息未完成,等一段時間後發送1xx狀態碼詢問
                        2. 2xx:成功。如200表明成功
                        3. 3xx:重定向。如302(重定向),客戶端A向瀏覽器告知去找C。304(訪問緩存)
                        4. 4xx:客戶端錯誤。403(沒權限),404(路徑錯誤),405(請求方式沒有對應doXXX方法)
                        5. 5xx:服務器端錯誤。500(服務器內部出現異常)

            2.響應頭:
                1. 格式:頭名稱:值
                2. 常見的響應頭:
                    1. Content-Type:服務器告訴客戶端本次響應體的數據格式以及編碼格式,解決中文亂碼
                    2. Content-disposition:服務器告訴客戶端以什麼格式打開響應體數據
                        * 值:
                            * in-line:默認值,在當前頁面內打開
                            * attachment;filename=xxx:以附件形式打開響應體。文件下載
            3.響應空行
            4.響應體:傳輸的數據
        
        * 響應字符串格式

## Response對象    
    * 功能:設置響應消息
        1. 設置響應行:
            1. 格式:HTTP/1.1 200 ok
            2. 設置狀態碼:setStatus(int sc)
        2. 設置響應頭:setHeader(String name,String value)
                        addHeadder(String name,String value)
                        二者之間的區別?
                            set只能覆蓋重寫,而add功能是追加
        3. 設置響應體:
            1. 獲取輸出流
                * 字符輸出流:PrintWriter getWriter()-------- 經常使用!
                * 字節輸出流:getOutputStream()
            2. 使用輸出流,將數據輸出到客戶端瀏覽器
    
        重定向的特色:redirect
            1. 地址欄發生變化。
            2. 重定向能夠訪問其餘站點(服務器)的資源
            3. 重定向是兩次請求。不能使用request對象

        轉發的特色:forward
            1. 轉發地址欄路徑不變
            2. 轉發只能訪問當前服務器下的資源
            3. 轉發只是一次請求,能夠使用request對象來共享數據

        何時用請求轉發,何時用重定向
            須要攜帶數據用請求轉發,剩下的狀況兩種都可
            
        路徑寫法:
            1. 路徑分類:
                1. 相對路徑(不用):經過相對路徑不能夠肯定惟一資源
                    * 如 ./index.html
                    * 不以/開頭,以.開頭
                    * 規則:肯定訪問當前資源和目標資源之間的的相對位置關係
                        * ./:表明當前目錄
                        * ../:後退一級目錄
                2. 絕對路徑:經過絕對路徑能夠肯定惟一資源(基於瀏覽器的絕對路徑:前臺頁面,重定向)(基於服務器的絕對路徑:轉發)
                    * 如http://localhost/day15/rsponseDemo2    /day15/rsponseDemo2
                    * 以/開頭
                    * 規則:判判定義的路徑是給誰用的?判斷請求未來從哪發出
                        * 給客戶端瀏覽器使用:須要加虛擬目錄(項目的訪問路徑)
                            * 建議虛擬目錄動態獲取:request.getContextPath()
                            * <a>,<form>,重定向...
                        * 給服務器使用:不須要加虛擬目錄
                            * 轉發路徑
                    
                    

html

相關文章
相關標籤/搜索