常见状态码:
状态码 | 状态码描述 | 说明 |
---|---|---|
200 | OK | 请求已成功,请求所希望的响应头或数据体将随此响应返回。出现此状态码是表示正常状态。 |
302 | Move temporarily | 重定向,请求的资源临时从不同的地址响应请求。 |
304 | Not Modified | 从浏览器缓存中读取数据,不从服务器重新获取数据。例如,用户第一次从浏览器访问服务器端图片资源,以后在访问该图片资源的时候就不会再从服务器上加载而直接到浏览器缓存中加载,这样效率更高。 |
404 | Not Found | 请求资源不存在。通常是用户路径编写错误,也可能是服务器资源已删除。 |
403 | Forbidden | 服务器已经理解请求,但是拒绝执行它 |
405 | Method Not Allowed | 请求行中指定的请求方法不能被用于请求相应的资源 |
500 | Internal Server Error | 服务器内部错误。通常程序抛异常 |
常见的响应头 :
响应头Key | 响应头value |
---|---|
location | 指定响应的路径,需要与状态码302配合使用,完成重定向 |
content-Type | 响应正文的类型(MIME类型,属于服务器里面的一种类型,例如文件在window系统有自己的类型,.txt .doc .jpg。文件在服务器中也有自己的类型),同时还可以解决乱码问题。例如:text/html;charset=UTF-8 |
content-disposition | 通过浏览器以附件形式解析正文,例如:attachment;filename=xx.zip |
refresh | 页面刷新,例如:3;url=www.itcast.cn //三秒刷新页面到www.itcast.cn |
小结
- 响应行
- 协议版本号 状态码
- 状态码:
- 200(一切正常)
- 404(找不到资源路径)
- 500(服务器报异常)
- 状态码:
- 响应头
- location
- 指定响应的路径
- content-type
- 告诉浏览器文件格式
- 解决中文乱码问题
- 告诉浏览器不要解析HTML
- refresh
- 定时刷新
- content-disposition
* 以附件形式展示图片等资源 - 响应体
- 服务器处理的结果响应到浏览器中
定时刷新
- 实现Servlet控制浏览器跳转页面
- 要设置响应头信息,并指定跳转页面
//利用Response对象,设置响应头 response.setHeader("refresh","x秒;url地址");
处理响应乱码
- 发生乱码的原因:
- Servlet发送浏览器的数据有中文时,是由tomcat响应给浏览器,而tomcat默认的编码为iso-8859-1,浏览器收到tomcat响应的中文数据时,使用iso-8859-1字符集进行解码(iso-8859-1不支持中文),就会出现乱码
- 解决乱码的方案:
- 在给浏览器响应时,告知浏览器响应的文本数据采用的编码表
response.setContentType("text/html;charset=UTF-8")
- 在给浏览器响应时,告知浏览器响应的文本数据采用的编码表
重定向
重定向可以去一个servlet,也可以去一个html静态资源
方法 | 说明 |
---|---|
response.setStatus(302); response.setHeader(“location”, “/otherServlet”); | 通过设置响应状态码和响应头实现重定向 |
response.sendRedirect("/otherServlet");//指定了一个Servlet路径 | 重定向的简写方式 |
response.sendRedirct(“跳转页面”);//指定了一个html页面 | 重定向的简写方式 |
注意: 开发中通常使用response.sendRedirect("/otherServlet");来实现重定向
小结
- 当服务器需要浏览器重新定向(重新请求)时,需要告知浏览器状态码为:302
- 在开发中,通常使用:response.sendRedirect("/请求路径") 来实现请求重定向
- 特点:浏览器中的url地址栏中的内容会改变
- 重定义的特点:一次请求、响应 变为 两次请求、响应
转发和重定向的区别
区别点 | 转发 | 重定向 |
---|---|---|
实现原理 | 服务器内部 | 浏览器执行 |
请求次数 | 一次 | 两次 |
浏览器地址栏地址 | 不变化 | 变为第二次请求的地址 |
能否共享request域 | 能够共享 | 不能共享 |
作用 | 共享request域对象 | 完成跳转 |
重定向和请求转发的区别
- 浏览器地址栏:
- 重定向:会改变url的地址
- 请求转发:不会改变url的地址
- 请求、响应:
- 重定向: 两次请求、两次响应
- 请求转发:1次请求、1次响应
- 功能:
- 重定向: 页面跳转
- 请求转发: 页面跳转 、 实现request域中数据共享
请求转发是在当前的服务器上完成,重定向是由浏览为主导,可以在不同的服务器上进行