服務器響應的生成:HTTP狀態代碼——HttpServletResponse接口應用

一 HTTP響應的格式web

             web服務器對客戶端的響應通常包含:一個狀態行,一些響應報頭,一個空行和相應的文檔構成。                            瀏覽器

             1,狀態行:緩存

                    狀態行由HTTP版本,一個狀態代碼以及一段對應狀態代碼的簡短消息組成,表示請求是否被理解或被知足。HTTP版本由服務器決定。狀態碼通常由系統自動設置爲200。也能夠用Servlet設置狀態碼。消息巍峨自定義。服務器

              2,響應報。post

              3,空行網站

          4,文檔url

二 如何設置狀態代碼spa

在向客戶程序發送任何文檔內容以前調用方法設置狀態代碼。.net

使用HttpServletResponse接口的setStatus,sedRedirect或sendError方法設置狀態碼。code

狀態代碼由3位數字組成,第一個數字定義了響應的類別,後面兩位數字沒有具體的分類。

在servlet中使用HttpServletResponse中定義的常量來引用狀態代碼。

1 設置任意狀態代碼:setStatus(int)方法

 在用PrintWriter實際返回如何內容以前調用setstatus方法。

參數能夠爲int類型狀態代碼,也能夠爲HttpServletResponse中定義的常量。

2 設置302和404狀態代碼:sendRedirect(String url)和sendError(int code,String msg)方法。 兩者拋出IOException。

狀態代碼302命令瀏覽器鏈接到新的url。sendRedirect方法生成302響應及Location報頭,給出新的url放入Location報頭以前,系統自動將相對url轉換爲絕對url。

狀態代碼404用於服務器沒有找到文檔的狀況。sendError方法發送狀態代碼及小段簡短信息,信息被自動安排在HTML文檔中發送給用戶。

三 狀態代碼的做用

 

  1. 1,HTTP1.1中可用的特定狀態碼  
  2.   
  3.     100-199:信息性的標示用戶應該採起的其餘動做。  
  4.   
  5.     200-299:表示請求成功。  
  6.   
  7.     300-399:用於那些已經移走的文件,經常包括Location報頭,指出新的地址。  
  8.   
  9.     400-499:代表客戶引起的錯誤。  
  10.   
  11.     500-599:由服務器引起的錯誤。  
  12.   
  13.   
  14.   
  15. 2,Servlet與客戶端交互使用的重要狀態代碼。  
  16.   
  17.     100(Continue,繼續):表示客戶端程序在詢問是否能夠在隨後的請求中向服務器發送附加文檔。服務器使用100(SC_CONTINUE)表示繼續,417(SC_EXPECTATION_FAILED)表示不接受該附件。  
  18.   
  19.       
  20.   
  21.     200(OK, 一切正常):200(SC_OK)表示一切正常。  
  22.   
  23.     202(Accepted,已經接受):202(SC_ACCEPTED)請求已經接受,但處理沒有完成。  
  24.   
  25.     204(No Content,沒有新文檔):204(SC_NO_CONTENT)因爲沒有新的文檔供顯示,繼續顯示以前的文檔。  
  26.   
  27.     205(Rest Content,重置內容):205(SC_REST_CONTENT)表示沒有新的文檔,但瀏覽器應該重置文檔視圖。用來指示瀏覽器清除表單的字段。  
  28.   
  29.       
  30.   
  31.       
  32.   
  33.     301(Moved Permanently,被永久移動):301(SC_MOVED_PERMANENTLY)表示所請求的文件已經被移動到別處。文檔的新URL在Location響應報頭中給出,瀏覽器應該從新鏈接到新URL。  
  34.   
  35.     302(Found,找到):302(SC_MOVED_PERMANENTLY)。301和302等同,區別在302將Location報頭中給出的URL看做是非永久性的臨時替代。瀏覽器自動從新鏈接到Location響應報頭中給出的URL。  
  36.   
  37.     304(Not Modified,未發生更改):304(SC_NOT_MODIFIED)表示緩存的版本是否爲最新。是的話客戶端就應該使用它,不然服務器應該返回所請求的文檔,設置正常狀態碼。  
  38.   
  39.         Servlet不該該直接使用這個狀態代碼,應該實現getLastModified方法,由默認的Service方法來處理。  
  40.   
  41.     307和303區別:接收到303響應則繼續進行get和post請求的重定向,接受到307,對於get請求繼續重定向,而post則再也不繼續。  
  42.   
  43.   
  44.   
  45.       
  46.   
  47.     400:代表客戶請求中含有語法錯誤。  
  48.   
  49.     401:表客戶程序試圖訪問密碼保護的頁面。  
  50.   
  51.     403:表示服務器拒絕提供相關的資源,無論是否受權。  
  52.   
  53.     404:(SC_NOT_FOUND)沒有如何資源供訪問。  
  54.   
  55.     405:這個資源不允許使用請求方法訪問。  
  56.   
  57.     415:服務器不知道如何處理請求附加文件類型。  
  58.   
  59.     417:迴應100,告訴瀏覽器不接受該附件。  
  60.   
  61.       
  62.   
  63.       
  64.   
  65.     500:表示服務器運行混亂。由CGI程序或Servlet崩潰或返回不正確格式的報頭引發。  
  66.   
  67.     501:表示服務器不支持該客戶程序發送的命令。  
  68.   
  69.     503:因爲維護或超負荷工做引發服務器不能作出響應。  
  70.   
  71.     505:表示服務器不支持請求行中給出的HTTP版本。  

 

四 從新鏈接,重定位,刷新的區別:

         從新鏈接不顯示任何中間頁面。

         刷新的時候瀏覽器會臨時顯示一箇中間頁面。

        重定位由另外的Servlet或網頁生成結果,而非該ServletB自己。

               重定位做用:

                      預先知道目的地,能夠驗證相關數據後再轉送到相關目的地。                       經過本身的網站公佈用戶須要訪問的網站連接,跟蹤用戶的行爲,統計訪問等。獲得相關信息後,再將用戶重定向到實際須要訪問的網站。 

五 進行從新定位和跳轉到錯誤頁面

           使用sendRedirect(String url)方法向瀏覽器發送302狀態代碼,瀏覽器自動從新鏈接到Location響應報頭中sendRedirect方法給出的URL,從新定位到相關頁面。

使用sendError(response.SC_NOT_FOUND,String msg)方法設置輸出的錯誤提示信息。

六 根據瀏覽器的不一樣將用戶從新定位到相關頁面的Servlet。

獲取User-Agent請求報頭區分不一樣的瀏覽器類型,使用sendRedirect(String url)方法向瀏覽器發送302狀態代碼,瀏覽器自動從新鏈接到Location響應報頭中sendRedirect方法給出的URL,從新定位到相關頁面。

相關文章
相關標籤/搜索