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

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

Response

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

1. 請求消息:客戶端發(fā)送給服務(wù)器端的數(shù)據(jù)
                * 數(shù)據(jù)格式:
                        1. 請求行
                        2. 請求頭
                        3. 請求空行
                        4. 請求體
2. 響應(yīng)消息:服務(wù)器端發(fā)送給客戶端的數(shù)據(jù)
                * 數(shù)據(jù)格式:
                        1. 響應(yīng)行
                            1. 組成:協(xié)議/版本 響應(yīng)狀態(tài)碼 狀態(tài)碼描述
                            2. 響應(yīng)狀態(tài)碼:服務(wù)器告訴客戶端瀏覽器本次請求和響應(yīng)的一個狀態(tài)。
                                1. 狀態(tài)碼都是3位數(shù)字 
                                2. 分類:
                                    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)異常)                                                   
                                        
                        2. 響應(yīng)頭:
                                1. 格式:頭名稱: 值
                                2. 常見的響應(yīng)頭:
                                        1. Content-Type:服務(wù)器告訴客戶端本次響應(yīng)體數(shù)據(jù)格式以及編碼格式
                                        2. Content-disposition:服務(wù)器告訴客戶端以什么格式打開響應(yīng)體數(shù)據(jù)
                                                * 值:
                                                        * in-line:默認值,在當前頁面內(nèi)打開
                                                        * attachment;filename=xxx:以附件形式打開響應(yīng)體。文件下載
                        3. 響應(yīng)空行
                        4. 響應(yīng)體:傳輸?shù)臄?shù)據(jù)

                * 響應(yīng)字符串格式
                        HTTP/1.1 200 OK
                        Content-Type: text/html;charset=UTF-8
                        Content-Length: 101
                        Date: Wed, 06 Jun 2018 07:08:42 GMT
        
                        <html>
                          <head>
                            <title>$Title$</title>
                          </head>
                          <body>
                          hello , response
                          </body>
                        </html>

Response對象


          功能:設(shè)置響應(yīng)消息
                1. 設(shè)置響應(yīng)行
                        1. 格式:HTTP/1.1 200 ok
                        2. 設(shè)置狀態(tài)碼:setStatus(int sc) 
                2. 設(shè)置響應(yīng)頭:setHeader(String name, String value) 
                        
                3. 設(shè)置響應(yīng)體:
                        * 使用步驟:
                                1. 獲取輸出流
                                        * 字符輸出流:PrintWriter getWriter()


                                        * 字節(jié)輸出流:ServletOutputStream getOutputStream()


                                2. 使用輸出流,將數(shù)據(jù)輸出到客戶端瀏覽器


        * 案例:
                1. 完成重定向
                        * 重定向:資源跳轉(zhuǎn)的方式
                        * 代碼實現(xiàn):
                          
[Java] 純文本查看 復制代碼
1
2
3
4
      //1. 設(shè)置狀態(tài)碼為302
                        response.setStatus(302);
                        //2.設(shè)置響應(yīng)頭location
[mw_shl_code=java,true]response.setHeader("location","/day15/responseDemo2");

                        //簡單的重定向方法
[Java] 純文本查看 復制代碼
1
response.sendRedirect("/day15/responseDemo2");
[/mw_shl_code]

                        * 重定向的特點:redirect
                                1. 地址欄發(fā)生變化
                                2. 重定向可以訪問其他站點(服務(wù)器)的資源
                                3. 重定向是兩次請求。不能使用request對象來共享數(shù)據(jù)
                        * 轉(zhuǎn)發(fā)的特點:forward
                                1. 轉(zhuǎn)發(fā)地址欄路徑不變
                                2. 轉(zhuǎn)發(fā)只能訪問當前服務(wù)器下的資源
                                3. 轉(zhuǎn)發(fā)是一次請求,可以使用request對象來共享數(shù)據(jù)
                        
                        * forward 和  redirect 區(qū)別
                                
                        * 路徑寫法:
                                1. 路徑分類
                                        1. 相對路徑:通過相對路徑不可以確定唯一資源
                                                * 如:./index.html
                                                * 不以/開頭,以.開頭路徑


                                                * 規(guī)則:找到當前資源和目標資源之間的相對位置關(guān)系
                                                        * ./:當前目錄
                                                        * ../:后退一級目錄
                                        2. 絕對路徑:通過絕對路徑可以確定唯一資源
                                                * 如:http://localhost/day15/responseDemo2                /day15/responseDemo2
                                                * 以/開頭的路徑


                                                * 規(guī)則:判斷定義的路徑是給誰用的?判斷請求將來從哪兒發(fā)出
                                                        * 給客戶端瀏覽器使用:需要加虛擬目錄(項目的訪問路徑)
                                                                * 建議虛擬目錄動態(tài)獲取:request.getContextPath()
                                                                * <a> , <form> 重定向...
                                                        * 給服務(wù)器使用:不需要加虛擬目錄
                                                                * 轉(zhuǎn)發(fā)路徑
                                                                
                                                                                                
                2. 服務(wù)器輸出字符數(shù)據(jù)到瀏覽器
                        * 步驟:
                                1. 獲取字符輸出流
                                2. 輸出數(shù)據(jù)

                        * 注意:
                                * 亂碼問題:
                                        1. PrintWriter pw = response.getWriter();獲取的流的默認編碼是ISO-8859-1
                                        2. 設(shè)置該流的默認編碼
                                        3. 告訴瀏覽器響應(yīng)體使用的編碼


                                        //簡單的形式,設(shè)置編碼,是在獲取流之前設(shè)置
                                response.setContentType("text/html;charset=utf-8");
                3. 服務(wù)器輸出字節(jié)數(shù)據(jù)到瀏覽器
                        * 步驟:
                                1. 獲取字節(jié)輸出流
                                2. 輸出數(shù)據(jù)

                4. 驗證碼
                        1. 本質(zhì):圖片
                        2. 目的:防止惡意表單注冊
       
## ServletContext對象:
        1. 概念:代表整個web應(yīng)用,可以和程序的容器(服務(wù)器)來通信
        2. 獲?。?/font>
                1. 通過request對象獲取
                        request.getServletContext();
                2. 通過HttpServlet獲取
                        this.getServletContext();
        3. 功能:
                1. 獲取MIME類型:
                        * MIME類型:在互聯(lián)網(wǎng)通信過程中定義的一種文件數(shù)據(jù)類型
                                * 格式: 大類型/小類型   text/html                image/jpeg


                        * 獲?。篠tring getMimeType(String file)  
                2. 域?qū)ο螅汗蚕頂?shù)據(jù)
                        1. setAttribute(String name,Object value)
                        2. getAttribute(String name)
                        3. removeAttribute(String name)


                        * ServletContext對象范圍:所有用戶所有請求的數(shù)據(jù)
                3. 獲取文件的真實(服務(wù)器)路徑
                    
[Java] 純文本查看 復制代碼
1
2
3
4
5
6
7
8
9
      1. 方法:String getRealPath(String path)    
String b = context.getRealPath("/b.txt");//web目錄下資源訪問
                         System.out.println(b);
                
                        String c = context.getRealPath("/WEB-INF/c.txt");//WEB-INF目錄下的資源訪問
                        System.out.println(c);
                
                        String a = context.getRealPath("/WEB-INF/classes/a.txt");//src目錄下的資源訪問
                        System.out.println(a);



作者:傳智播客JavaEE培訓學院

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

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