您的位置:首页 > 理论基础 > 计算机网络

处理HTTP响应(响应码、响应头、请求重定向、自动刷新/跳转)

2013-01-08 14:53 573 查看
我们已经对servlet有了基本的认识了。接着我们来简单看看对客户端向服务器端发送的一次请求的响应中,我们可以做哪些事。至于对于客户端的请求我们可以怎么处理,明天再讲。

  通过HttpAnalyzer这个软件,对请求和响应进行跟踪后,我们可以发现:

  Response Headers Value

  (Status-Line)         HTTP/1.1 200 OK

  Content-type         text/html

  Content-Length 100

  Date                 Thu, 14 Jul 2011 14:48:23 GMT

  Server         lighttpd

  Connection      Keep-Alive

  第一行是状态行,包含http协议版本信息,这个是服务器端来自动决定的。200是响应码,指示本次响应是什么样的状态,200代表成功。ok是对这个状态码的一个描述。我们常见的状态码
4000
有:404(客户端引发的错误,如请求一个不存在的资源)、500(服务器端引发的错误,如语法错误)、302(告知用户要向发过来的Location指定的URL发起请求,这个和Location配合使用)。。。等等。

  接下来的叫响应头,这里面包含了当前发送回来的数据是什么类型、长度是多少、发送的时间是什么时候等等。这里面的信息,我们是可以设置(添加、删除、修改)的。

  那么,我们在servlet中如何来修改或者设置响应码和响应头的信息呢?

  我们在重写对应的doGet或者doPost或者其他的方法的时候,都会得到一个由容器创建的HttpServletRequest和HttpServletResponse对象。我们可以调用response的不同方法来设置我们想要的响应状态。

  //设置响应码

  response.setStatus(int);

  //设置响应码并设置响应描述

  response.sendError(int,"描述");

  //我们常用的一个响应头的设置

  response.setCharacterEncoding("GBK"); 告诉容器,以GBK编码的形式发送数据

  response.setContentType("application/vnd.ms-excel"); 告诉客户端,当前发送到数据是什么格式,客户端就可以进行相应的处理

  //设置响应头相关信息

  response.setHeader("", ""); 很明显,这是一种键值对的形式。和我们上面捕获的信息格式一致。

  //添加一个响应头

  response.addHeader("", "");

 

  当我们的响应头设置完毕以后,接着就要向客户端发送数据了。

  在servlet中,我们可以选择对两种类型的数据发送使用不同的类。

  字符型我们用PrintWriter

  PrintWriter pw = response.getWriter();

  pw.println("数据");

  字节型我们用ServletOutputStream

  ServletOutputStream sos = response.getOutputStream();

  sos.write(bytes,0,length);

  下面说一下请求重定向(请求转发以后说)和定时刷新/跳转

  对于请求的重定向只需要依据代码:

  response.sendRedirect("要转向到的网址");

  这句代码其实内部做了两件事:1、将响应码设置为302;  2、将响应头中的Location的值设置为我们指定的网址。

  定时刷新/跳转

  response.setHeader("Refresh", "5;URL=跳转到的网址");  等待5秒,自动跳转到我们制定的网址上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐