`

文件下载jspServlet

 
阅读更多

下载
承接以前的上傳
列出文件:

public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  String real=getServletContext().getRealPath("/WEB-INF/Files");
  Map<String,String> map=new HashMap<String, String>();
  File file=new File(real);
  listfiles(file,map);
  request.setAttribute("map", map);
  request.getRequestDispatcher("/ListFiles.jsp").forward(request, response);
 }

 private void listfiles(File file, Map<String, String> map) {
  // TODO Auto-generated method stub
  if(file.isFile()){
   String uuidn=file.getName();
   String oldname=uuidn.substring(uuidn.indexOf("_")+1);
   map.put(uuidn, oldname);
  }
  else{
   File[] fis=file.listFiles();
   for(File f:fis){
    listfiles(f, map);
   }
  }
 }


jsp:

    <h1>本站资源</h1>
    <c:forEach items="${map}" var="me">
    <c:url value="/servlet/Download" var="url">
     <c:param name="filename" value="${me.key}"></c:param>
    </c:url>
    <a href="${url }"> ${me.value }<br /></a>
    </c:forEach>


处理下载:

public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  String real=getServletContext().getRealPath("/WEB-INF/Files");
  Map<String,String> map=new HashMap<String, String>();
  File file=new File(real);
  listfiles(file,map);
  request.setAttribute("map", map);
  request.getRequestDispatcher("/ListFiles.jsp").forward(request, response);
 }

 private void listfiles(File file, Map<String, String> map) {
  // TODO Auto-generated method stub
  if(file.isFile()){
   String uuidn=file.getName();
   String oldname=uuidn.substring(uuidn.indexOf("_")+1);
   map.put(uuidn, oldname);
  }
  else{
   File[] fis=file.listFiles();
   for(File f:fis){
    listfiles(f, map);
   }
  }
 }


 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  response.setContentType("text/html;charset=UTF-8");
  OutputStream out = response.getOutputStream();
  
  String filename = request.getParameter("filename");// get请求方式
  filename = new String(filename.getBytes("ISO-8859-1"),"UTF-8");// 中文编码
  
  // 截取老文件名
  String oldFileName = filename.substring(filename.indexOf("_")+1);
  // 得到存储路径
  String storePath = getServletContext().getRealPath("/WEB-INF/files");
  // 得到文件的全部路径
  String filePath = makeStorePath(storePath, filename)+"\\"+filename;
  
  // 判断文件是否存在
  File file = new File(filePath);
  if(!file.exists()){
   out.write("对比起!你要下载的文件可能已经不存在了".getBytes("UTF-8"));
   return;
  }
  
  InputStream in = new FileInputStream(file);
  // 通知客户端以下载的方式打开
  response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(oldFileName, "UTF-8"));
  
  byte[] b = new byte[1024];
  int len = -1;
  while((len=in.read(b))!=-1){
   out.write(b, 0, len);
  }
  in.close();
  out.write("下载成功".getBytes("UTF-8"));
 }
 private String makeStorePath(String storePath, String fileName) {
  int hashCode = fileName.hashCode();
  int dir1 = hashCode & 0xf;// 0000~1111:整数0~15共16个
  int dir2 = (hashCode & 0xf0) >> 4;// 0000~1111:整数0~15共16个

  String path = storePath + "\\" + dir1 + "\\" + dir2; // WEB-INF/files/1/12
  File file = new File(path);
  if (!file.exists())
   file.mkdirs();

  return path;
 }


处理Get方式的异常:

filename = new String(filename.getBytes("ISO-8859-1"),"UTF-8");// 中文编码
处理Post方式的乱码:

request.setCharacterEncoding("utf-8")

分享到:
评论

相关推荐

    jsp+servlet实现文件上传下载

    ### jsp+servlet实现文件上传下载 在现代Web开发中,文件上传下载是常见的功能之一。JSP(JavaServer Pages)与Servlet技术结合可以轻松实现这一功能。本篇将详细介绍如何利用jspSmartUpload组件实现文件的上传与...

    jsp servlet 博客项目

    【JSP与Servlet简介】 JSP(JavaServer Pages)是Java平台上的动态网页技术,它允许开发者在HTML、XML或其他标记语言中嵌入Java代码,从而实现动态内容的生成。JSP的优势在于其分离了视图和逻辑,使得前端开发和...

    jsp Servlet总结

    jsp servlet开发总结文档 jsp Servlet总结jsp Servlet总结jsp Servlet总结

    Eclipse JSPServlet环境搭建

    搭建 Eclipse JSP/Servlet 环境需要安装 JDK、Eclipse J2EE 和 Tomcat,配置 Tomcat 服务器,关联 Eclipse 和 Tomcat,创建 Dynamic Web 项目,并编写 JSP 文件。通过这些步骤,用户可以成功搭建 Eclipse JSP/...

    jspServletDemo

    在JSPServletDemo中,可能包含了多个JSP文件,每个文件对应一个网页界面,用于展示不同的功能或者数据。 Servlet是Java编写的一个小应用程序,它扩展了Web服务器的功能,可以处理HTTP请求并生成响应。在JSPServlet...

    java jsp servlet 通讯录

    在这个通讯录应用中,JSP文件将用于呈现用户界面,比如`listContacts.jsp`可能用于显示所有的联系人列表,而`addContact.jsp`则用于让用户输入新联系人的信息。 3. **Servlet**: Servlet是Java Web应用程序中的控制...

    JSP servlet简单实用

    JSP文件本质上是一个HTML或XML文档,其中嵌入了Java代码片段。这些代码在服务器上执行,生成响应的HTML,然后发送到客户端浏览器。 **二、Servlet简介** Servlet是Java编程语言中的一个接口,它提供了处理HTTP请求...

    java jsp+servlet实现文件下载(而不是在网页中显示出文件内容) 迅雷下载功能.zip

    综上所述,这个项目利用了`jsp`和`servlet`的技术,通过设置正确的HTTP响应头,实现了文件下载功能,同时也考虑了迅雷等下载工具的需求。在实际开发中,还需要考虑其他因素,如错误处理、日志记录和性能优化,以提供...

    jsp servlet struts hibernate spring

    当客户端请求JSP页面时,Web服务器将JSP转换为Servlet,然后编译成.class文件,由JVM执行。首次请求时,JSP会被转换、编译,后续请求则直接调用已存在的Servlet,提高了效率。 - **缓冲区**:JSP的输出默认先写入...

    jsp servlet 上传例子 基于 jspsmartupload

    本教程将详细讲解如何使用 `JSP` 和 `Servlet` 结合 `jspsmartupload` 库来实现文件上传功能。 首先,我们需要了解`jspsmartupload`库。`jspsmartupload` 是一个基于Java的开源项目,专门设计用于在`JSP`页面上处理...

    jquery jsp servlet 上传

    这个“jquery jsp servlet 上传”案例是一个典型的前端jQuery与后端Java(通过jsp和servlet)进行文件上传的教程,非常适合初学者学习。这里我们将深入探讨相关知识点。 **jQuery**: jQuery是一个轻量级的...

    jsp+servlet实现大型文件下载

    本教程将深入讲解如何利用JSP和Servlet来实现大型文件的下载功能,这对于构建高效、稳定的Web应用至关重要。 一、Servlet简介 Servlet是Java平台上的一个标准接口,用于扩展服务器的功能。在Web开发中,Servlet通常...

    jsp/servlet帮助文档

    这个文件可能是Java EE的API文档,包含了对Servlet、JSP以及其他Java EE组件的详细描述。通过阅读这个文档,开发者可以深入了解这些技术的用法和接口。 总结,"jsp/servlet帮助文档"涵盖了JSP和Servlet的基本概念、...

    jsp实现Servlet文件下载的方法

    本文讲解了如何使用JSP配合Servlet实现文件下载的功能,以下知识点将从整体概述、具体实现方法、关键代码解析、以及实现过程中的注意事项等几个方面展开介绍。 ### 整体概述 1. **JSP与Servlet的关系**: - JSP...

    jsp servlet 实现上传和下载

    在本资源中,"jsp servlet 实现上传和下载" 主题涵盖了如何利用这两种技术,结合SmartUpload组件来处理文件的上传与下载操作,并且涉及到了数据库的交互。下面将详细解释这些知识点。 1. JSP:JSP是一种服务器端...

    JSP SERVLET 导出数据库内容到EXCEL

    总结来说,"JSP SERVLET 导出数据库内容到EXCEL"是一个典型的Java Web应用场景,结合了JSP的视图呈现、Servlet的业务处理和数据库操作,以及第三方库Apache POI的文件生成能力,为企业级应用提供了强大的数据导出...

    文件下载,jsp,servlet编写

    总的来说,这个项目展示了如何使用JSP和Servlet协同工作,实现从服务器端向客户端提供文件下载服务。理解这两个技术的基本原理和它们在文件下载场景中的应用,对于开发Java Web应用是非常有价值的。

    JSPServlet帮助文档

    本篇文章将根据给定的帮助文档资料,详细介绍 JSP 和 Servlet 的基本概念、重要属性、常用函数以及它们在实际开发中的应用。 #### 二、JSP与Servlet简介 ##### 2.1 JSP概述 - **定义**:JSP 是一种基于 Java 的...

    jsp servlet实例

    JSP文件在服务器端被编译成Servlet,然后由服务器执行并返回结果给客户端。 2. **Servlet**:Servlet是Java编写的小型服务器端程序,用于处理HTTP请求并生成响应。它们通常用于扩展服务器的功能,比如处理表单数据...

    JSP Servlet 学习笔记源码

    JSP和Servlet应用通常被打包成WAR文件,部署在Web应用服务器如Tomcat、Jetty等上。开发者需要了解如何配置web.xml文件,以及如何在服务器中调试和部署应用。 8. **性能优化**: 了解缓存机制、减少不必要的数据库...

Global site tag (gtag.js) - Google Analytics