全国咨询热线:400-618-4000

Java培训之response如何发送状态码

更新时间:2019年03月21日18时01分 来源:传智播客Java培训学院

在上一节服务器如何处理客户端请求中,我们了解,request对象中封装了请求信息,使用response对象可以向客户端响应消息。在Http协议详解之响应中,我们知道响应首行信息中包含了响应状态码,而今天,我们要学习的就是如何使用response向客户端发送状态码。
response对象的类型是HttpServletResponse。Servlet的生命周期方法之一service()方法,它的两个参数的类型分别是ServletRequest和ServletResponse。其中HttpServletResponse和ServletResponse是子与父的关系,在HttpServlet类中,生命周期方法service()将它的参数都强转成HttpServletRequest类型和HttpServletResponse 类型。
ServletRequest和ServletResponse是与协议无关的两个接口,而HttpServletRequest和HttpServletResponse是与http协议有关的两个接口。
下面我们来了解HttpServletResponse,首先查看该接口的API,如图1-1所示:
图1-1 HttpServletResponse接口方法
图1-1中,有三个方法被红色标注,它们是发送状态码的相关方法,与Http协议相关,因此该方法是在HttpServletResponse类中定义。
接下来对着三个方法进行分析,如下所示:
(1)void sendError(int sc)
  该方法是向客户端发生错误的状态码,例如404、500等。
(2)void sendError(int sc,java.lang.String msg)
  该方法是向客户端发送错误的状态码,并且添加错误信息,例如,404,您访问的资源不存在。
(3)void setStatus(int sc)
  该方法是向客户端发送成功的状态码,还可以用来发送302状态码。
下面我们来看一个案例,使用response向客户端发送404状态码,具体如下:
(1)创建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发布到Tomcat服务器中,然后启动服务器,在浏览器地址栏上输入:http://localhost:8080/Example01/StatusServlet,浏览器显示结果如图1-2所示:
图1-2 浏览器显示结果
由图1-2所示,在StatusServlet类中,使用response发送404状态码发送成功,这里要注意的是,当使用response的setStatus(int sc)方法发送404状态码时,不起任何作用。

本文版权归传智播客Java培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:传智播客Java培训学院
首发:http://www.itcast.cn/javaee