实现动态文件内容的下载:
1.Servlet必须告诉浏览器其所输出的内容的类型不是普通的文本文件或HTML文件,而是要保存到本地的一个下载文件.下面程序中详细解说.
2.需要通过HttpServletResponse.setHeader方法设置Content-Disposition头的值为"attachment;filename=文件名",
3.因为下载的文件可能是各种类型.所以如果要将内容传送给客户端,就应将其作为二进制处理.这时就要使用HttpServletResponse.getOutputStream方法而不是getWriter方法.
下面是一个简单的例程:
1.
MyServlet.java文件:
package cn.itcast;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置ContentType头字段的值为浏览器无法使用某种方式打开或激活某个程序来处理的类型.
//可以为application/x-msdownload或者application/octet-stream
response.setContentType("application/x-msdownload;charset=gb2312");
//设置Content-Disposition头的值为"attachment;filename=文件名"
response.addHeader("Content-Disposition", "attachment;filename=web.xml");
//从response中获得一个ServletOutputStream
ServletOutputStream sops = response.getOutputStream();
//从服务器上获得一个文件,这里用的是下面的web.xml文件.
String s = getServletContext().getRealPath("WEB-INF\\web.xml");
File file = new File(s);
InputStream ips = new FileInputStream(file);
byte[] content = new byte[(int) file.length()];
ips.read(content);
//将文件内容写入到输出流中发送给客户端
sops.write(content);
ips.close();
sops.close();
}
}
2.
test.html文件.其中有一个超链接指向上面的Servlet.
<html>
<body>
<A href="servlet/MyServlet">下载附件</A>
</body>
</html>
3.web.xml
注册Servlet,并指定其映射的URL
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>cn.itcast.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/servlet/MyServlet</url-pattern>
</servlet-mapping>
</web-app>
分享到:
相关推荐
使用Servlet实现文件的下载
使用Servlet实现文件的上传与下载Demo
java servlet实现文件点击下载。 将资源解压后配置在tomcat中,输入http://localhost:8080/DownLoadFileDemo/即可看到点击下载的链接
Servlet实现文件上传与下载 Servlet 文件上传与下载
Servlet实现文件下载public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException{ String str = this.getServletContext().getRealPath("/download/隐形的翅膀 -...
Servlet实现文件下载源代码 Servlet实现文件下载源代码 Servlet实现文件下载源代码
本人用servelt以及jsp 在tomcat上实现的大型文件下载功能源文件
jsp+servlet实现文件下载(而不是在网页中显示出文件内容) 迅雷下载功能.zip
JSP/servlet实现上传下载 JSP/servlet实现上传下载 JSP/servlet实现上传下载 JSP/servlet实现上传下载
使用CKEditor3.6.0版本,使用上传组件实现Servlet上传图片,含有列子
servlet实现上传文件和下载文件的方法,在浏览器中输入http://ip:port/servletName?path这种方式将客户端文件上传至服务器端,简单的例子,servletName参照web.xml path参照servlet中写的参数
页面+处理的SERVLET代码 需要jspSmartUpload组件
本文实例为大家分享了JSP+Servlet实现文件上传到服务器功能的具体代码,供大家参考,具体内容如下 项目目录结构大致如下: 正如我在上图红线画的三个东西:Dao、service、servlet 这三层是主要的结构,类似 MVC ...
该资源利用开源upload文件包,成功实现文件上传与下载
在网上自己找了好久好久。...想实现一个文件批量打包下载的功能, 发现在CSDN上竟然找不到我想要的? 我气愤了!自己动手找各种资料。开始写出了一个列子。 在帮助自己的同时,也希望能帮助各位节省时间。
用servlet实现动态的生成验证码,点击验证码改变,及验证码的校验,
jsp+servlet实现文件上传和下载,需要使用commons-fileupload,commons-io.jar java库文件
java 写的文件上传下载的例子,可以做简单图片文件服务器
com.fm.FileManagerService:一个servlet用来实现主要的文件上传下载逻辑的 com.fm.MyPreogressListener:一个进度监听类,用来做上传进度条的 jquery-1.9.1.js index.jsp:文件列表页面 upload.jsp:文件上传form...
实现上传下载,服务器用的是tomcat,将注册信息、文件信息写入xml文件中