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

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

Java培訓之response如何發(fā)送狀態(tài)碼

更新時間:2016年07月27日14時13分 來源:傳智播客Java培訓學院 瀏覽次數(shù):

在上一節(jié)服務器如何處理客戶端請求中,我們了解,request對象中封裝了請求信息,使用response對象可以向客戶端響應消息。在Http協(xié)議詳解之響應中,我們知道響應首行信息中包含了響應狀態(tài)碼,而今天,我們要學習的就是如何使用response向客戶端發(fā)送狀態(tài)碼。
response對象的類型是HttpServletResponse。Servlet的生命周期方法之一service()方法,它的兩個參數(shù)的類型分別是ServletRequest和ServletResponse。其中HttpServletResponse和ServletResponse是子與父的關系,在HttpServlet類中,生命周期方法service()將它的參數(shù)都強轉成HttpServletRequest類型和HttpServletResponse 類型。
ServletRequest和ServletResponse是與協(xié)議無關的兩個接口,而HttpServletRequest和HttpServletResponse是與http協(xié)議有關的兩個接口。
下面我們來了解HttpServletResponse,首先查看該接口的API,如圖1-1所示:
圖1-1 HttpServletResponse接口方法
圖1-1中,有三個方法被紅色標注,它們是發(fā)送狀態(tài)碼的相關方法,與Http協(xié)議相關,因此該方法是在HttpServletResponse類中定義。
接下來對著三個方法進行分析,如下所示:
(1)void sendError(int sc)
  該方法是向客戶端發(fā)生錯誤的狀態(tài)碼,例如404、500等。
(2)void sendError(int sc,java.lang.String msg)
  該方法是向客戶端發(fā)送錯誤的狀態(tài)碼,并且添加錯誤信息,例如,404,您訪問的資源不存在。
(3)void setStatus(int sc)
  該方法是向客戶端發(fā)送成功的狀態(tài)碼,還可以用來發(fā)送302狀態(tài)碼。
下面我們來看一個案例,使用response向客戶端發(fā)送404狀態(tài)碼,具體如下:
(1)創(chuàng)建web應用,Example01,在該應用中新建一個Servlet類,StatusServlet,主要代碼如例1-1所示:
例1-1 StatusServlet.java
public class StatusServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
            response.sendError(404,"您訪問的資源不存在");
    }
}
(2)StatusServlet在web.xml文件中配置的訪問路徑是“/StatusServlet”;
(3)將Example10發(fā)布到Tomcat服務器中,然后啟動服務器,在瀏覽器地址欄上輸入:http://localhost:8080/Example01/StatusServlet,瀏覽器顯示結果如圖1-2所示:
圖1-2 瀏覽器顯示結果
由圖1-2所示,在StatusServlet類中,使用response發(fā)送404狀態(tài)碼發(fā)送成功,這里要注意的是,當使用response的setStatus(int sc)方法發(fā)送404狀態(tài)碼時,不起任何作用。

本文版權歸傳智播客Java培訓學院所有,歡迎轉載,轉載請注明作者出處。謝謝!
作者:傳智播客Java培訓學院
首發(fā):http://m.fskzgqt.cn/javaee
0 分享到:
和我們在線交談!