# Response响应
### HTTP协议
1.请求消息:
2.响应消息:服务器发给客户端的数据
格式:
1.响应行
1.组成:协议/版本 响应状态码 状态码描述
2.响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态
```
1.状态码都是三位数字
2.分类:
1.1xx :服务器:服务器接收客户端消息,但没有接收完成,等待一段时间后,发送1xx状态码
2.2xx :成功,代表:200
3.3xx :重定向:代表:302(重定向),304(访问缓存)
4.4xx :客户端错误
代表:
1.404(请求的路径没有对应的资源)
2.405(请求方式没有对应的doXXX方法)
5.5xx :服务器端错误 代表:500(服务器内部出现异常)
```
2.响应头
1.格式:头名称:值
2.常见的响应头:
1.Content-Type:服务器告诉客户端本次响应体数据格式以及编码格式
2.Content-disposition:服务器告诉客户端以什么格式打开响应体数据
值:
in-line 默认值
attachment;filename=xxx:以附件形式打开响应体.文件下载
3.响应空行
4.响应体
传输的数据
### Response对象
功能:设置响应消息
1.设置响应行
1.格式:HTTP/1.1 200 ok
2.设置响应头
```
setHeader(String name,String value)
```
3.设置响应体
使用步骤:
1.获取输出流
字符输出流:
```
Printwriter getWriter()
```
字节输出流
```
ServletOutputStream getOutputStream()
```
2.使用输出流,将数据输出到客户端浏览器
```
//重定向代码实现
setStatus(302)
setHeader("Location",String location)
//简单的重定向方法
sendRedirect(String location)
```
```java
response.setStatus(302);
response.setHeader("Location","/d2");
response.sendRedirect("/d2");
```
重定向的特点:
1.重定向地址栏发生变化
2.重定向可以访问其他服务器下的资源
3.**重定向是两次请求**,不能使用request对象来共享数据
转发的特点:
1.转发地址栏路径不变
2.转发只能访问当前服务器下的资源
3.转发是一次请求,可以使用request对象来共享数据
路径分类:
**1.相对路径**:通过相对路径不可以确定唯一资源
- 如: ./index.html
- 不以/开头,以.开头
- 规则:找到当前资源与目标资源之间的相对关系
```
./当前目录
../后退一级目录
```
**2.绝对路径**:通过绝对路径可以确定唯一资源
- 以/开头的路径
- 如
```
http://localhost/demo02
/demo02
```
规则:判断定义的路径是给谁用的?判断请求将来从哪儿发出
- 如果是给客户端用的:要加虚拟目录
- 建议虚拟目录动态获取
- 如果是给服务器用的:可以不加虚拟目录
- 转发路径
**动态获取虚拟目录**:
```java
request.getContextPath()
```
|
|