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

全國(guó)咨詢/投訴熱線:400-618-4000

Response

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

1. 請(qǐng)求消息:客戶端發(fā)送給服務(wù)器端的數(shù)據(jù)
                * 數(shù)據(jù)格式:
                        1. 請(qǐng)求行
                        2. 請(qǐng)求頭
                        3. 請(qǐng)求空行
                        4. 請(qǐng)求體
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ù)器告訴客戶端瀏覽器本次請(qǐng)求和響應(yīng)的一個(gè)狀態(tài)。
                                1. 狀態(tài)碼都是3位數(shù)字 
                                2. 分類:
                                    1. 1xx:服務(wù)器就收客戶端消息,但沒(méi)有接受完成,等待一段時(shí)間后,發(fā)送1xx多狀態(tài)碼
                                    2. 2xx:成功。代表:200
                                    3. 3xx:重定向。代表:302(重定向),304(訪問(wèn)緩存)
                                    4. 4xx:客戶端錯(cuò)誤。
                                          * 代表:
                                          * 404(請(qǐng)求路徑?jīng)]有對(duì)應(yīng)的資源) 
                                          * 405:請(qǐng)求方式?jīng)]有對(duì)應(yīng)的doXxx方法
                                    5. 5xx:服務(wù)器端錯(cuò)誤。代表:500(服務(wù)器內(nèi)部出現(xiàn)異常)                                                   
                                        
                        2. 響應(yīng)頭:
                                1. 格式:頭名稱: 值
                                2. 常見(jiàn)的響應(yīng)頭:
                                        1. Content-Type:服務(wù)器告訴客戶端本次響應(yīng)體數(shù)據(jù)格式以及編碼格式
                                        2. Content-disposition:服務(wù)器告訴客戶端以什么格式打開(kāi)響應(yīng)體數(shù)據(jù)
                                                * 值:
                                                        * in-line:默認(rèn)值,在當(dāng)前頁(yè)面內(nèi)打開(kāi)
                                                        * attachment;filename=xxx:以附件形式打開(kāi)響應(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對(duì)象


          功能:設(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)的方式
                        * 代碼實(shí)現(xiàn):
                          
[Java] 純文本查看 復(fù)制代碼
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");

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

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


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


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

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


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

                4. 驗(yàn)證碼
                        1. 本質(zhì):圖片
                        2. 目的:防止惡意表單注冊(cè)
       
## ServletContext對(duì)象:
        1. 概念:代表整個(gè)web應(yīng)用,可以和程序的容器(服務(wù)器)來(lái)通信
        2. 獲?。?/font>
                1. 通過(guò)request對(duì)象獲取
                        request.getServletContext();
                2. 通過(guò)HttpServlet獲取
                        this.getServletContext();
        3. 功能:
                1. 獲取MIME類型:
                        * MIME類型:在互聯(lián)網(wǎng)通信過(guò)程中定義的一種文件數(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對(duì)象范圍:所有用戶所有請(qǐng)求的數(shù)據(jù)
                3. 獲取文件的真實(shí)(服務(wù)器)路徑
                    
[Java] 純文本查看 復(fù)制代碼
1
2
3
4
5
6
7
8
9
      1. 方法:String getRealPath(String path)    
String b = context.getRealPath("/b.txt");//web目錄下資源訪問(wèn)
                         System.out.println(b);
                
                        String c = context.getRealPath("/WEB-INF/c.txt");//WEB-INF目錄下的資源訪問(wèn)
                        System.out.println(c);
                
                        String a = context.getRealPath("/WEB-INF/classes/a.txt");//src目錄下的資源訪問(wèn)
                        System.out.println(a);



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

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

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