1. 响应状态
组成:协议/版本 响应状态码 状态码描述
- 1xx:服务器就收客户端消息,但没有接受完成,等待一段时间后,发送1xx多状态码
- 2xx:成功。代表:200
- 3xx:重定向。代表:302(重定向),304(访问缓存)
- 4xx:客户端错误。
- 5xx:服务器端错误。代表:500(服务器内部出现异常)
setStatus(int code)
2. 响应头
常见请求头 | 描述 |
Location | 指定响应的路径,需要与状态码302配合使用,完成跳转。 |
Content-Type | 响应正文的类型(MIME类型)取值:text/html;charset=UTF-8 |
Content-Disposition | 通过浏览器以下载方式解析正文取值:attachment;filename=xx.zip |
Set-Cookie | 与会话相关技术。服务器向浏览器写入cookie |
Content-Encoding | 服务器使用的压缩格式取值:gzip deflate: |
Content-length | 响应正文的长度 |
Refresh | 定时刷新,格式:秒数;url=路径。url可省略,默认值为当前页。 取值:3;url=www.itcast.cn //三秒刷新页面到www.itcast.cn |
Server | 指的是服务器名称,默认值:Apache-Coyote/1.1。 可以通过conf/server.xml配置进行修改。<Connector port="8080" ... server="itcast"/> |
Last-Modified | 服务器通知浏览器,文件的最后修改时间。与If-Modified-Since一起使用。 |
2.1. 通过一个头 Content-Type 告知客户端使用何种码表
response.setHeader("Content-Type", "text/html;charset=UTF-8");
response.setContentType("text/html;charset=UTF-8");
2.2. 设置响应头数据
response.addHeader("name", "zhangsan");
response.addIntHeader("age", 28);
response.addDateHeader("birthday", date.getTime());
2.3. 设置定时刷新的头
response.setHeader("refresh","5;url=http://www.baidu.com");
2.4. 通知客户端不要缓存数据
addHeader("pragma","no-cache")
2.5. 服务器告诉客户端以什么格式打开响应体数据
Content-disposition:
in-line:默认值,在当前页面内打开
attachment;filename=xxx:以附件形式打开响应体。文件下载
response.setHeader("Content-Disposition", "attachment;filename="+filename);
3. 响应空行
4. 响应体
传输的数据
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 101
Date: Wed, 06 Jun 2018 07:08:42 GM
<html>
<head>
<title>$Title$</title>
</head>
<body>
hello , response
</body>
</html>
5. 返回
5.1. PrintWriter getWriter()
获得字符流,通过字符流的write(String s)方法可以将字符串设置到response缓冲区中,随后Tomcat会将response缓冲区中的内容组装成Http响应返回给浏览器端。
5.2. ServletOutputStream getOutputStream()
获得字节流,通过该字节流的write(byte[] bytes)可以向response缓冲区中写入字节,在由Tomcat服务器将字节内容组成Http响应返回给浏览器。
注意:getOutPutStream和getWriter 不能同时使用