码迷,mamicode.com
首页 > Web开发 > 详细

网页超链接下载资源

时间:2017-12-13 01:51:59      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:--   exce   except   etc   new   input   byte   att   content   

页面上提供一些超链接,对应的服务器程序中有相关资源,当超链接被单击时,可以下载服务器资源
 版本1:将资源内容响应到浏览器
 1在WebContent下创建资源如:
  葫芦娃.txt          葫芦娃第一集1 2 3 abc
  美女.jpg
  aaa.txt              helloword 你好
 2在WebContent下创建download.html
  <a href="/day33_04/MyServlet?filename=葫芦娃.txt" >葫芦娃</a>
  <a href="/day33_04/MyServlet?filename=美女.jpg" >美女</a>
  <a href="/day33_04/MyServlet?filename=aaa.txt" >aaa</a>
  注意:MyServlet是web.xml中url-prttern的名字
 3创建Servlet类
  继承HttpServlet
  doget方法中
  //1获取浏览器提交的文件名称
  String filename = request.getParameter("filename");
  //2文件名乱码
  filename = new String(filename.getBytes("ISO-8859-1"),"UTF-8");
  //3通过文件名读取对应资源,使用ServletContext获取输入流,并响应到浏览器
  ServletContext boss = getServletContext();
  InputStream is = boss.getResourceAsStream("/"+filename);
  //4通过输出流响应到浏览器
  ServletOutputStream out = response.getOutputStream();
  byte[] bytes = new byte[1024];
  int len;
  while((len=is.read(bytes))!=-1){
   sos.write(bytes, 0, len);
  }
  //5释放资源
  is.close();
  
  步骤:
   要将资源响应到浏览器 需要IO流 使用字节输入输出流
   源文件:WebContent下的资源  可能有中文 需要转码
   目的地:浏览器  response响应
   首先获取源文件
    网页超链接 链接到资源 获取资源文件名,有中文转码
   读取源文件
    需要boss的getResourceAsStream
   写入目的地
    需要响应 response响应  getOutputStream()
  注意点:
   运行时使用浏览器download.html
 版本2:实现下载,弹窗提示客户进行下载处理
 //在响应之前,要告诉浏览器采取的处理方式----进行下载
 response.setHeader("content-Disposition","attachment; filename"+filename);
 版本3:实现下载,弹窗提示客户进行下载处理
 filename = new String(filename.getBytes("ISO-8859-1"),"UTF-8");
 byte[] bytes2 = filename.getBytes("GBK");
 String Downloadfilename = new String(bytes2, "ISO-8859-1");
 步骤
  资源要先响应到浏览器 然后从浏览器通过弹窗下载到客户端
  资源-->Tomcat-->浏览器  浏览器-->Tomcat-->客户端
  资源到浏览器ISO-8859-1-->UTF-8
  浏览器到客户端 封装成GBK 然后再封装成ISO-8859-1
  通过Tomcat将ISO-8859-1剥开成GBK
 
注意:
 如果资源创建在WebContent下重新创建一个文件夹xx,
 那么版本1的3处 InputStream is = boss.getResourceAsStream("/"+filename);
 将"/"改为"/xx/" 否则会报空指针异常NullPointerException

网页超链接下载资源

标签:--   exce   except   etc   new   input   byte   att   content   

原文地址:http://www.cnblogs.com/xsyijava-sl/p/8030490.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!