Servlet自学第15讲:http响应详解
来源:互联网 发布:教小孩学编程 编辑:程序博客网 时间:2024/04/30 10:59
http响应介绍
一个http响应代表服务器向浏览器回送的数据
http响应的基本结构:
- 状态行:
格式:HTTP版本号 状态码 原因叙述
举例:HTTP/1.1 200 OK
状态码 含义
100-199:表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程
200-299 :表示成功接收请求并完成整个处理过程,常用200
300-399 :为完成请求,客户需要进行一步细化请求。例如:请求的资源已经移动一个新的地址,常用302,307
400-499 :客户端的请求有错误 404
500-599 :服务器端出现错误,常用500 - 状态行举例说明:
200 就是整个请求和响应过程没有发生错误,这个最常见.
302: 表示当你请求一个资源的时候,服务器返回302 表示,让浏览器转向到另外一个资源,比如: response.sendRedirect(“/web应用/资源名”)
response.setStatus(302);response.setHeader("Location", "/servletPro/Servlet2"); // 上面两句话等价 response.sendRedirect("/servletPro/Servlet2");
404: 找不到资源
500: 服务器端错误
http响应消息头详解
- Location: http://www.baidu.org/index.jsp 【让浏览器重新定位到url】
- Server:apache tomcat 【告诉浏览器我是tomcat】
- Content-Encoding: gzip 【告诉浏览器我使用 gzip】
- Content-Length: 80 【告诉浏览器会送的数据大小80节】
- Content-Language: zh-cn 【支持中文】
- Content-Type: text/html; charset=GB2312 [内容格式text/html; 编码gab2312]
- Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT 【告诉浏览器,该资源上次更新时间】
- Refresh: 1;url=http://www.baidu.com 【过多久去,刷新到 http://www.baidu.com】
- Content-Disposition: attachment; filename=aaa.zip 【告诉浏览器,有文件下载】
- Transfer-Encoding: chunked [传输的编码]
- Set-Cookie:SS=Q0=5Lb_nQ; path=/search[后面详讲]
- Expires: -1[告诉浏览器如何缓存页面IE]
- Cache-Control: no-cache [告诉浏览器如何缓存页面火狐]
- Pragma: no-cache [告诉浏览器如何缓存页面]
- Connection: close/Keep-Alive [保持连接 1.1是Keep-Alive]
- Date: Tue, 11 Jul 2000 18:23:51 GMT
常用的几个http响应消息头介绍
- refresh消息头
定时刷新网页的作用
response.setHeader("Refresh", "5;url=/servletPro/Servlet2");
- 文件下载 Content-Disposition
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); //PrintWriter out = response.getWriter(); //演示下载文件 response.setHeader("Content-Disposition", "attachment; filename=winter.jpg"); //打开文件.说明一下web 站点下载文件的原理 //1.获取到要下载文件的全路径 String path=this.getServletContext().getRealPath("/images/Winter.jpg"); //System.out.println("path="+path); //2创建文件输入流 FileInputStream fis=new FileInputStream(path); //做一个缓冲字节数组 byte buff[]=new byte[1024]; int len=0;//表示实际每次读取了多个个字节 OutputStream os=response.getOutputStream(); while((len=fis.read(buff))>0){ os.write(buff, 0, len); } //缺点: 没有进度条./图标/ //关闭 os.close(); fis.close(); }
- 页面缓存
提出问题:浏览器默认情况下,会缓存我们的页面,这样出现一个问题:如果我们的用户习惯把光标停留在地址栏,然后回车来取页面,就会默认调用cache中取数据。
(不同浏览器识别的消息头不同,所以有多个)
//指定该页面不缓存 Ie response.setDateHeader("Expires", -1);【针对IE浏览器设置不缓存】 //为了保证兼容性. response.setHeader("Cache-Control", "no-cache");【针对火狐浏览器等】 response.setHeader("Pragma", "no-cache");【其他浏览器】
有些网站要求网页缓存一定时间,比如缓存一个小时:
response.setDateHeader("Expires", System.currentTimeMillis()+3600*1000*24);//后面一个参数表示设置的缓存保持时间,-1表示永远缓存
0 0
- Servlet自学第15讲:http响应详解
- Servlet自学第28讲:ServletContext详解
- Servlet自学第14讲:深度剖析http请求
- Servlet自学第16讲:HttpServletResponse对象详解
- Servlet自学第20讲:分页技术详解
- Servlet自学第23讲:Session会话技术详解
- Servlet自学第7讲:Servlet简介
- Servlet自学第8讲:Servlet生命周期
- Servlet自学第0讲:开山篇
- Servlet自学第1讲:web入门
- Servlet自学第11讲:Servlet细节讲解
- Servlet自学第22讲:servlet会话技术介绍
- Servlet自学第3讲:Tomcat简介与配置
- Servlet自学第5讲:Tomcat目录结构
- Servlet自学第6讲:Tomcat虚拟目录的管理
- Servlet自学第17讲:中文乱码处理
- Servlet自学第18讲:获取浏览器html参数
- Servlet自学第27讲:Session与Cookie对比总结
- ajax请求json数据最后带冒号
- 关键字const有什么含意?
- Linux makefile 教程
- 肖鑫铭:美元连跌局面惨淡,消息利好金银反攻
- UUID做主键,好还是不好?这是个问题。
- Servlet自学第15讲:http响应详解
- 页面跳转过程中的数据传递问题【不断更新】
- LTE细说--速率匹配
- QInputDialog还挺好用的呵呵
- openwrt swconfig
- bower version syntax
- 全排列递归实现
- 强叔侃墙 VPN篇 L2TP NAS-Initiated VPN
- UIButton的状态