这里有新鲜出炉的Java并发编程示例,程序狗速度看过来!
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
这篇文章主要为大家详细介绍了java压缩文件和下载图片示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主页面index.xml
- <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
- <html>
- <head>
- <title>项目的主页</title>
- </head>
- <body>
- <h2>主页主页</h2>
- <h2>湖南长沙</h2>
- <h3>发布方式一......</h3>
- <img src="images/1.jpg"/><!-- 相对路径 -->
- <br/>
- <!-- 绝对路径 -->
- <a href="/helloweb/gzip">页面内容压缩演示--gzip</a><br/><br/>
- <a href="down">下载图片</a><br/><br/>
- </body>
- </html>
压缩文件:GzipServlet.java
只有被压缩文件足够大,才能抵消压缩开销,有效压缩。否则,很小的文件压缩之后的文件大小反而变大
- package cn.hncu.servlet;
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.util.zip.GZIPOutputStream;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- public class GzipServlet extends HttpServlet {
- @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
- IOException {
- String str = "vuttyjhgyurc湖南长沙surdivsf安徽芜湖890-80897也许更长v就会习惯这样tvsduvgkjxhvnxzc.nlkcjsdfpeifniuq4ey8f048eyuyli" + "skchkxhckxzncnxclkjhasliduhasiduisugdlisgdlkjadhlksjhdlkasjdhasklhdlkjsahashdkskdjhkdjshkldsjhlksjhfkljd";
- // byte src[]=str.getBytes();//使用平台默认编码(GBK),没有就使用ISO-8859-1
- byte src[] = str.getBytes("utf-8");
- //后台向浏览器发的数据,浏览器不认识--需要下载,用文本打开是乱码。所以要设置协议
- ByteArrayOutputStream bOut = new ByteArrayOutputStream(); //内存流
- GZIPOutputStream gOut = new GZIPOutputStream(bOut);
- gOut.write(src); //把src压到bOut
- gOut.close(); //刷缓存
- byte dest[] = bOut.toByteArray(); //src==>dest
- //总结:输出压缩数据时要设置响应头
- resp.setHeader("Content-Encoding", "gzip");
- //设置响应头之后,就不用下载,不乱码
- resp.setContentType("text/html;charset=utf-8"); //一定要把str.getByte设置编码
- //当文件很小时:压缩无效果,反而累赘(不能抵消压缩所需要的开销)...较大文件会被压小(一般>200k)
- System.out.println("压缩前的长度:" + src.length);
- System.out.println("压缩后的长度:" + dest.length);
- //把压缩之后的数据dest刷出去
- OutputStream out = resp.getOutputStream(); //resp.getWriter();
- // out.write(src);
- out.write(dest);
- }
- }
下载图片:DownServlet .java(图片在src目录下面)
- package cn.hncu.servlet;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.URLEncoder;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- public class DownServlet extends HttpServlet {
- @Override
- protected void service(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
- //协议设置1
- resp.setContentType("application/force-download");//用默认下载文件的应用程序下载
- String fileName="4.jpg";
- //如果文件名是中文--如:我的图片.jpg
- //fileName=URLEncoder.encode(fileName,"utf-8");//把fileName编码一下,如果不编码,浏览器中显示的文件名会乱码
- InputStream in=DownServlet.class.getClassLoader().getResourceAsStream(fileName);
- //协议设置2
- resp.setHeader("content-Disposition", "attachment;filename=\'"+fileName+"\'");//告诉浏览器当前下载的文件名
- //DownServlet.class的位置:"D:\apache-tomcat-7.0.30\webapps\helloWeb\WEB-INF\classes\cn\hncu\servlet"
- //图片所在的当前位置:"D:\apache-tomcat-7.0.30\webapps\helloWeb\WEB-INF\classes"
- //FileInputStream fin=new FileInputStream(fileName);//不可行
- OutputStream out=resp.getOutputStream();
- byte buf[]=new byte[512];
- int len=0;
- // while((len=fin.read(buf))!=-1){
- // out.write(buf, 0, len);
- // }
- while((len=in.read(buf))!=-1){
- out.write(buf, 0, len);
- }
- }
- }
来源: http://www.phperz.com/article/17/1110/359762.html