Java.Web - Http协议初步接触

来源:互联网 发布:比特精灵for mac版 编辑:程序博客网 时间:2024/06/05 02:53
【HTTP请求消息头】
(Request-Line)     GET /manager/html HTTP/1.1    请求行,使用的HTTP规范...
下面是消息头
Accept      */*
Accept-Encoding     gzip, deflate      可以接收gzip文件,或者默认
Accept-Language     zh-CN        支持中文
Connection     Keep-Alive      保存常连接
Host     127.0.0.1:8080
Referer     http://127.0.0.1:8080/     告诉服务器我来自哪里?可以防盗链 
User-Agent     Mozilla/4.0     浏览器内核
(空行)
内容

Servlet 中获取头信息 --> String host = request.getHeader("HOST");
    可以通过获取 Referer 信息,来判断用户是从那个页面跳转过来的,来防止盗链
    直接 在浏览器输入 跳转过来,Referer 的值为null

【HTTP响应消息头】

Location    用于重定向,向浏览器发送一个新URI地址。 
    response.setStatus(302);
    response.setHeader("Location","URL");

Content-Disposition    用于下载文件
  •     演示下载文件 
    // 设置消息头 下载
    response.setHeader("Content-Disposition", "attachment;filename=test.jpg");    /* 1.读文件 */    // 获取文件全路径    String path = getServletContext().getRealPath("/images/test.jpg");    // 创建一个文件输入流
    FileInputStream fis = new FileInputStream(path);
    // 缓冲区
    byte[] buffer = new byte[1024];
    int length;
    while ((length = fis.read(buffer)) > 0) {/* 2.写文件 */out.write(buffer, 0, length);    }
  •     通过合适地设置Content-disposition的值
    Servlet能指示浏览器是“内嵌”显示文件还是把它当作附件处理。
例1.内嵌显示一个文件
    Content-disposition: inline; filename=foobar.pdf
例2.往response里附加一个文件
    Content-disposition: attachment; filename=foobar.pdf

Expires 应该在什么时候认为文档已经过期,从而不再缓存它?
  • 设置页面不缓存
    response.setDateHeader("Expires",-1); //-1则表示不缓存(IE)
    // 下面两句代码是为了兼容性
    response.setHeader("Cache-Control","no-cache");
    response.setHeader("Pragma","no-cache");
  • 设置页面缓存一定时间
    response.setDateHeader("Expires", System.currentTimeMillis()+3600*1000*24); // 缓存一天




原创粉丝点击