1 //以下载方式打开资源
2 public void test4(HttpServletResponse response) throws IOException {
3 response.setHeader("content-disposition", "attachment;filename=1.bmp");
4 InputStream in = this.getServletContext().getResourceAsStream("/1.bmp");
5 int len = 0;
6 byte buffer[] = new byte[1024];
7 OutputStream out = response.getOutputStream();
8 while((len=in.read(buffer))>0){
9 out.write(buffer, 0, len);
10 }
11 }
12 //设置响应头,每隔3秒刷新一次
13 public void test3(HttpServletResponse response) throws IOException {
14 response.setHeader("refresh", "3");//可以用在股票里
15 //response.setHeader("refresh", "3:url='http://www.sina.com'");3秒之后刷新到新浪上面去
16 //在论坛上,会说3秒后去哪,就是用到这个技术。
17 String data = "aaaaaaaaaaaaa";//服务器从浏览器得到的数据
18 response.getOutputStream().write(data.getBytes());
19 }
20 //通过content-type字段控制浏览器以哪种方式打开数据
21 public void test2(HttpServletResponse response) throws IOException {
22 response.setHeader("content-type", "image/bmp");
23 InputStream in = this.getServletContext().getResourceAsStream("/1.bmp");
24 int len = 0;
25 byte buffer[] = new byte[1024];
26 OutputStream out = response.getOutputStream();
27 while((len=in.read(buffer))>0){
28 out.write(buffer, 0, len);
29 }
30 }
31
32 //压缩数据输出
33 public void test1(HttpServletResponse response) throws IOException {
34 String data="aaaaaaaaa";
35 ByteArrayOutputStream bout = new ByteArrayOutputStream();
36 GZIPOutputStream gout = new GZIPOutputStream(bout);
37 //ByteArrayOutputStream叫底层流,GZIPOutputStream包装流,包装流会有一个缓冲的,调用包装流写数据的时候,
38 //如果数据量没有把包装流的缓冲写满,他是不会往底层流里面写的,为了确保一定能够取到数据,添加gout.close();
39 gout.write(data.getBytes());
40 gout.close();
41 byte gzip[] = bout.toByteArray();//得到压缩后的数据
42 //给浏览器之后浏览器不知道是压缩数据,一定要通过设置响应头,通知浏览器数据采用的压缩格式,不然会出现错误
43 response.setHeader("Content-Encoding", "gzip");
44 response.setHeader("Content-Length", gzip.length+"");
45 response.getOutputStream().write(gzip);
46 }
47 //实现断点下载,请求里面包含range头
48 public static void test6() throws MalformedURLException, IOException,
49 FileNotFoundException {
50 //已接受aaaaa 源文件aaaaaaaaaaaaaaaaaaaaa
51 URL url = new URL("http://localhost:8080/day05/a.txt");
52 HttpURLConnection conn = (HttpURLConnection) url.openConnection();
53 conn.setRequestProperty("Range", "bytes=5-");
54
55 InputStream in = conn.getInputStream();
56
57 int len=0;
58 byte buffer[] = new byte[1024];
59 FileOutputStream out = new FileOutputStream("c:\\a.txt",true);//追加
60 while((len=in.read(buffer))>0){
61 out.write(buffer, 0, len);
62 }
63 in.close();
64 out.close();
65 }