这篇文章简单总结一下HTTP请求头和响应头,并举一些web开发中响应头的用例。
1. HTTP请求头
accept:浏览器通过这个头告诉服务器,它所支持的数据类型。如:text/html, image/jpeg
accept-Charset:浏览器通过这个头告诉服务器,它支持哪种字符集。
accept-encoding:浏览器通过这个头告诉服务器,它支持哪种压缩格式。
accept-language:浏览器通过这个头告诉服务器,它的语言环境。
host:浏览器通过这个头告诉服务器,它想访问哪台主机。
if-modified-since:浏览器通过这个头告诉服务器,缓存数据的时间
referer:浏览器通过这个头告诉服务器,客户机是哪个页面来的(防盗链)。
Connection:浏览器通过这个头告诉服务器,请求完后是断开链接还是维持链接。
2. HTTP响应头
location:服务器通过这个头告诉浏览器跳到哪里。
server:服务器通过这个头告诉浏览器服务器的型号。
content-encoding:服务器通过这个头告诉浏览器数据的压缩格式。
content-length:服务器通过这个头告诉浏览器回送数据的长度。
content-language:服务器通过这个头告诉浏览器语言环境。
content-type:服务器通过这个头告诉浏览器回送数据的类型。
refresh:服务器通过这个头告诉浏览器定时刷新。
content-disposition:服务器通过这个头告诉浏览器以下载方式打开数据。
transfer-encoding:服务器通过这个头告诉浏览器数据是以分块方式回送的
以下三个表示服务器通过这个头告诉浏览器不要缓存
expires:-1
cache-control:no-cache
pragma:no-cache
3. 响应头在开发中的示例
- public class ServletDemo extends HttpServlet {
-
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
-
-
-
- contentTypeTest(resp);
-
-
- }
-
-
- private void refreshTest(HttpServletResponse resp) throws IOException {
-
- resp.setHeader("refresh", "3;url='http://www.baidu.com'");//隔三秒跳转到百度
- resp.getWriter().write("java web");
- }
-
-
- private void contentTypeTest(HttpServletResponse resp) throws IOException {
-
- resp.setHeader("Content-type", "image/jpeg");
- resp.setHeader("Content-Disposition", "attachment;filename=dog.jpg");
- InputStream in = this.getServletContext().getResourceAsStream("/dog.jpg");
-
-
- byte buffer[] = new byte[1024];
- int len = 0;
- OutputStream out = resp.getOutputStream();
- while((len = in.read(buffer)) > 0) {
- out.write(buffer, 0, len);
- }
- }
-
-
- private void zipTest(HttpServletResponse resp) throws IOException {
- String data = "java web学习 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
- System.out.println("原始数据的大小:" + data.getBytes().length);
-
-
-
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- GZIPOutputStream gout = new GZIPOutputStream(bout);
- gout.write(data.getBytes());
- gout.close();
-
-
- byte g[] = bout.toByteArray();
- System.out.println("压缩数据的大小:" + g.length);
-
- resp.setHeader("Content-Encoding", "gzip");
- resp.setHeader("Content-Length", g.length + "");
- resp.getOutputStream().write(g);
- }
-
-
- private void locationTest(HttpServletResponse resp) {
- resp.setStatus(302);
- resp.setHeader("location", "/day04/MyHtml.html");
- }
-
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
-
- doGet(req, resp);
- }
- }
4. HTTP响应状态码
100-199:表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程
200-299:表示成功接收请求并已完成整个处理过程,常用200
300-399:未完成请求,客户需进一步细化请求,常用302,307,304
400-499:客户端的请求有错误,常用404
500-599:服务器端出现错误,常用500
相关阅读:http://blog.csdn.net/column/details/servletandjsp.html
_____________________________________________________________________________________________________________________________________________________
-----乐于分享,共同进步!
-----更多文章请看:http://blog.csdn.net/eson_15