下载
承接以前的上傳
列出文件:
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实现文件上传下载 在现代Web开发中,文件上传下载是常见的功能之一。JSP(JavaServer Pages)与Servlet技术结合可以轻松实现这一功能。本篇将详细介绍如何利用jspSmartUpload组件实现文件的上传与...
【JSP与Servlet简介】 JSP(JavaServer Pages)是Java平台上的动态网页技术,它允许开发者在HTML、XML或其他标记语言中嵌入Java代码,从而实现动态内容的生成。JSP的优势在于其分离了视图和逻辑,使得前端开发和...
jsp servlet开发总结文档 jsp Servlet总结jsp Servlet总结jsp Servlet总结
搭建 Eclipse JSP/Servlet 环境需要安装 JDK、Eclipse J2EE 和 Tomcat,配置 Tomcat 服务器,关联 Eclipse 和 Tomcat,创建 Dynamic Web 项目,并编写 JSP 文件。通过这些步骤,用户可以成功搭建 Eclipse JSP/...
在JSPServletDemo中,可能包含了多个JSP文件,每个文件对应一个网页界面,用于展示不同的功能或者数据。 Servlet是Java编写的一个小应用程序,它扩展了Web服务器的功能,可以处理HTTP请求并生成响应。在JSPServlet...
在这个通讯录应用中,JSP文件将用于呈现用户界面,比如`listContacts.jsp`可能用于显示所有的联系人列表,而`addContact.jsp`则用于让用户输入新联系人的信息。 3. **Servlet**: Servlet是Java Web应用程序中的控制...
JSP文件本质上是一个HTML或XML文档,其中嵌入了Java代码片段。这些代码在服务器上执行,生成响应的HTML,然后发送到客户端浏览器。 **二、Servlet简介** Servlet是Java编程语言中的一个接口,它提供了处理HTTP请求...
综上所述,这个项目利用了`jsp`和`servlet`的技术,通过设置正确的HTTP响应头,实现了文件下载功能,同时也考虑了迅雷等下载工具的需求。在实际开发中,还需要考虑其他因素,如错误处理、日志记录和性能优化,以提供...
当客户端请求JSP页面时,Web服务器将JSP转换为Servlet,然后编译成.class文件,由JVM执行。首次请求时,JSP会被转换、编译,后续请求则直接调用已存在的Servlet,提高了效率。 - **缓冲区**:JSP的输出默认先写入...
本教程将详细讲解如何使用 `JSP` 和 `Servlet` 结合 `jspsmartupload` 库来实现文件上传功能。 首先,我们需要了解`jspsmartupload`库。`jspsmartupload` 是一个基于Java的开源项目,专门设计用于在`JSP`页面上处理...
这个“jquery jsp servlet 上传”案例是一个典型的前端jQuery与后端Java(通过jsp和servlet)进行文件上传的教程,非常适合初学者学习。这里我们将深入探讨相关知识点。 **jQuery**: jQuery是一个轻量级的...
本教程将深入讲解如何利用JSP和Servlet来实现大型文件的下载功能,这对于构建高效、稳定的Web应用至关重要。 一、Servlet简介 Servlet是Java平台上的一个标准接口,用于扩展服务器的功能。在Web开发中,Servlet通常...
这个文件可能是Java EE的API文档,包含了对Servlet、JSP以及其他Java EE组件的详细描述。通过阅读这个文档,开发者可以深入了解这些技术的用法和接口。 总结,"jsp/servlet帮助文档"涵盖了JSP和Servlet的基本概念、...
本文讲解了如何使用JSP配合Servlet实现文件下载的功能,以下知识点将从整体概述、具体实现方法、关键代码解析、以及实现过程中的注意事项等几个方面展开介绍。 ### 整体概述 1. **JSP与Servlet的关系**: - JSP...
在本资源中,"jsp servlet 实现上传和下载" 主题涵盖了如何利用这两种技术,结合SmartUpload组件来处理文件的上传与下载操作,并且涉及到了数据库的交互。下面将详细解释这些知识点。 1. JSP:JSP是一种服务器端...
总结来说,"JSP SERVLET 导出数据库内容到EXCEL"是一个典型的Java Web应用场景,结合了JSP的视图呈现、Servlet的业务处理和数据库操作,以及第三方库Apache POI的文件生成能力,为企业级应用提供了强大的数据导出...
总的来说,这个项目展示了如何使用JSP和Servlet协同工作,实现从服务器端向客户端提供文件下载服务。理解这两个技术的基本原理和它们在文件下载场景中的应用,对于开发Java Web应用是非常有价值的。
本篇文章将根据给定的帮助文档资料,详细介绍 JSP 和 Servlet 的基本概念、重要属性、常用函数以及它们在实际开发中的应用。 #### 二、JSP与Servlet简介 ##### 2.1 JSP概述 - **定义**:JSP 是一种基于 Java 的...
JSP文件在服务器端被编译成Servlet,然后由服务器执行并返回结果给客户端。 2. **Servlet**:Servlet是Java编写的小型服务器端程序,用于处理HTTP请求并生成响应。它们通常用于扩展服务器的功能,比如处理表单数据...
JSP和Servlet应用通常被打包成WAR文件,部署在Web应用服务器如Tomcat、Jetty等上。开发者需要了解如何配置web.xml文件,以及如何在服务器中调试和部署应用。 8. **性能优化**: 了解缓存机制、减少不必要的数据库...