一、HTTP中常用响应头

  • Location: http://www.it315.org/index.jsp
  • Server:apache tomcat
  • Content-Encoding: gzip
  • Content-Length: 80
  • Content-Language: zh-cn
  • Content-Type: text/html; charset=GB2312
  • Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT
  • Refresh: 1;url=http://www.it315.org
  • Content-Disposition: attachment; filename=aaa.zip
  • Transfer-Encoding: chunked
  • Set-Cookie:SS=Q0=5Lb_nQ; path=/search
  • ETag: W/"7777-1242234904000"
  • Expires: -1
  • Cache-Control: no-cache
  • Pragma: no-cache
  • Connection: close/Keep-Alive
  • Date: Tue, 11 Jul 2000 18:23:51 GMT

二、设置缓存信息

  public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("-----------CacheServlet-------------");
        // 设置相应头信息
        // 设置缓存时间100秒
        // response.setDateHeader("Expires",
        // System.currentTimeMillis()+100*1000);
        // 禁止使用缓存
        // response.setDateHeader("Expires", 0);
        // response.setHeader("Cache-Control", "no-cache");
        // response.setHeader("Pragma", "no-cache");

response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("  <BODY>");
        // 读取文件
        String path = getServletContext().getRealPath("/a.txt");
        FileReader reader = new FileReader(new File(path));
        char buffer[] = new char[256];
        int len = 0;
        while ((len = reader.read(buffer)) != -1) {
            out.println(new String(buffer, 0, len));
        }
        reader.close();
        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }

/**
     * 最后一次修改的时间
     */
    @Override
    protected long getLastModified(HttpServletRequest req) {
        String path = getServletContext().getRealPath("/a.txt");
        File file = new File(path);
        return file.lastModified();
    }

a.txt文件内容:

a.txt在项目中的放置地址:

结果:

三、下载功能源代码如下

public class DownServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String path = request.getServletContext().getRealPath("/down/中国.png");
        File file = new File(path);
        // 下载的方式打开此操作(指定编码方式,下载文件名与源文件一致)
        response.addHeader("Content-Disposition", "attachment;fileName="
                + URLEncoder.encode(file.getName(), "UTF-8"));
        OutputStream os = response.getOutputStream();
        InputStream is = new FileInputStream(file);
        int len = 0;
        byte[] buffer = new byte[1024];
        while ((len = is.read(buffer)) != -1) {
            os.write(buffer, 0, len);
        }
        is.close();
        os.close();
    }

public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }

}

本程序中下载文件的地址放置在该项目的如下位置:

JavaWeb学习记录(一)——response响应头之缓存设置与下载功能的实现的更多相关文章

  1. JavaWeb学习记录(二十三)——文件上传与下载

    一.导入jar包

  2. HTTP学习记录:四、头信息(请求和响应)

    学习资源主要为:@小坦克HTTP相关博客 一.请求头信息(Request Header) 请求头信息包含比较多,如下: 1.Cache头域 if-modified-Since 作用:把浏览器端缓存页面 ...

  3. javaweb笔记6多个响应头以及 HttpServletResponse对象

    1 常见的响应头 Location: http://www.it315.org/index.jsp     重定向的地址.配合302的状态码一起使用,实现重定向效果. Content-Type: te ...

  4. JavaWeb学习记录总结(二十九)--Servlet\Session\Cookie\Filter实现自动登录和记住密码

    一.Servlet package autologin.servlet.login; import java.io.IOException;import java.security.MessageDi ...

  5. JavaWeb学习记录(七)——MVC操作数据库增删改查与分页功能

    一.分页工具类 package blank.util;import java.util.List; import org.springframework.jdbc.core.JdbcTemplate; ...

  6. JavaWeb学习记录(九)——Cookie的增加、删除、查看

    一.servlet功能代码: public void doGet(HttpServletRequest request, HttpServletResponse response)           ...

  7. JavaWeb学习记录(二十六)——在线人数统计HttpSessionListener监听实现

    一.session销毁控制层代码 public class InvalidateSession extends HttpServlet { public void doGet(HttpServletR ...

  8. javaweb学习记录(1)

    Java基础学习笔录 1.运行java程序,出现bad version number in.class file 编译器()的版本号高于运行环境(jre)的版本号,可以降低编译器版本号,也可以通过提升 ...

  9. JavaWeb学习记录(六)——用户登录功能

    使用JDBC.spring框架.servlet实现一个简单的用户登录功能. 一.mySql数据库 SET FOREIGN_KEY_CHECKS=0; -- ---------------------- ...

随机推荐

  1. Spring学习笔记之Bean的一些属性设置

    1.beans 里边配置default-init-method="shunge",有这个方法的会执行,没有也不会报错 2.beans 里边配置default-destroy-met ...

  2. 《java版进制转换》

    import java.util.Scanner; class 十进制转成十六进制_2 { public static void main(String[] args) { int num = 0; ...

  3. iOS对象序列化

    系统对象的归档我就不介绍了,这个不复杂,自己看一下就会了. 我在这里主要介绍自定义对象的归档. Sample.h文件 // //  Sample.h //  Serialization // //   ...

  4. ACM - 概率、期望题目 小结(临时)

    概率DP求期望大多数都是全期望公式的运用.主要思考状态空间的划分以及状态事件发生的概率.问题可以分为无环和有环两类.无环一类多数比较简单,可以通过迭代或者记忆化搜索完成.有环一类略复杂,可以通过假设方 ...

  5. C#基础--面向过程计算器

    //面向过程计算器 //思路: 需要注意的是: 两个数相除 除数不能为0: //1.提示用户输入 //2.进行运算 //3.得到结果 Console.WriteLine("请输入第一个数字: ...

  6. malloc,vmalloc与kmalloc,kfree与vfree的区别和联系

    kmalloc和vmalloc是分配的是内核的内存,malloc分配的是用户的内存kmalloc保证分配的内存在物理上是连续的,vmalloc保证的是在虚拟地址空间上的连续kmalloc能分配的大小有 ...

  7. iOS- 利用AFNetworking(AFN) - 实现图片上传

    官方建议AFN的使用方法 1. 定义一个全局的AFHttpClient:包含有 1> baseURL 2> 请求 3> 操作队列 NSOperationQueue 2. 由AFHTT ...

  8. 爬虫学习----获取cookie

    http://blog.csdn.net/samxx8/article/details/21535901 1.获取cookie import urllib import http.cookiejarc ...

  9. Python的图形化界面

    导入easygui模块有很多种方法 , 这里只介绍一种简单使用的 . import easygui as g 将easygui 简称为g 然后开始调用她的函数就行. import easygui as ...

  10. 【LeetCode OJ】Best Time to Buy and Sell Stock III

    Problem Link: http://oj.leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/ Linear Time Solut ...