Servlet最主要的作用:处理客户端请求,并向客户端做出响应
Servlet的每次请求,Web服务器在调用service()方法之前,都会创建两个对象,分别是HttpServletRequest和HttpServletResponse
HttpServletRequest:用于封装HTTP请求消息,简称request对象
HttpServletResponse:用于封装HTTP响应消息,简称response对象
注意:在Web服务器运行阶段,每个Servlet都会创建一个实例对象。然而,每次HTTP请求,Web服务器都会调用所请求Servlet实例的service(HttpServletRequest request,HttpServletResponse response)方法,重新创建一个request对象和response对象
4.1 HttpServletResponse对象
在Servlet API中,定义了一个HttpServletResponse接口,它继承自ServletResponse接口,专门用于封装HTTP响应消息
HTTP响应消息分为状态行,响应消息头,消息体三部分
4.1.1 发送状态码相关的方法
当Servlet向客户端回送响应消息时,需要响应消息中设置状态码。在HttpServletResponse接口中,定义了两个发送状态码的方法,具体如下:
1.setStatus(int status)方法:用于设置HTTP响应消息的状态码,并生成相应状态行。由于相应状态行中的状态描述信息直接与状态码相关,而HTTP版本由服务器确定,因此,只要setStatus(int status)方法设置了状态码,即可实现状态行的发送。注意:正常情况下,Web服务器会默认产生一个状态码为200的状态行
2.sendError(int sc)方法:该方法用于发送表示错误信息的状态码,例如,404状态码表示找不到客户端请求的资源。在response对象中,提供了两个重载的sendError(int sc)方法,具体如下:
第1种:public void sendError(int code) throws java.io.IOException
第2种:public void sendErroe(int code,String message) throws java.io.IOException
第1种方法只是发送错误信息的状态码
第2种方法除了发送状态码外,还可以增加一条用于提示说明的文本信息,该文本信息将出现在发送给客户端的正文内容中
4.1.2 发送响应消息头相关的方法
当Servlet向客户端响应消息时,由于HTTP协议的响应头字段有很多种,在这里简单介绍几种:
1.用于设置各种头字段的:addHeader(),setHeader(),addlntHeader(),setlntHeader()等方法
2.用于设置字符编码:setContentType(),setLocale(),setCharacterEncoding()等方法
4.1.3 发送响应消息体相关的方法
由于在HTTP响应消息中,大量的数据都是通过响应消息体传递,因此,ServletResponse遵循以IO流传递大量的数据理念。在发送消息体