java之servlet之文件下载

1.在页面中,可以直接通过超链接来下载:

  a) 如果浏览器能够打开该文件,那么直接在浏览器中显示---不是想要的效果

  b) 任何人都能下载,不能进行权限控制

2.通过servlet来进行下载,在servlet中是通过文件流来下载的。

@WebServlet("/download")
public class DownloadServlet extends HttpServlet{
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("application/octet-stream");
        //解决 以文件形式下载 而不会被浏览器打开    以及中文文件名需要编码
        resp.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode("中国", "utf-8")+".txt");
        PrintWriter os = resp.getWriter();
        String path = this.getServletContext().getRealPath("/download");
        Reader is = new BufferedReader(new FileReader(new File(path,"t.txt")));
        int len=0;
        char[] buffer = new char[200];
        while((len=is.read(buffer))!=-1){
            os.print(new String(buffer,0,len));
        }
        is.close();
        os.close();
    }
}

原文地址:https://www.cnblogs.com/Vincent-yuan/p/11161240.html

时间: 2024-08-11 14:13:53

java之servlet之文件下载的相关文章

java—servlet实现文件下载功能

最近在学javaweb技术,利用所学知识做了一个简单的项目,在服务器上实现给用户下载文件的功能.自动列出文件夹下的文件提供下载,支持中文文件名. 结果图 其中使用了tomcat来部署服务器,代码中应用了少许EL表达式和JSTL标签,使用了jsp和servlet,当然还有java和http的基础知识,但是个人觉得重点是http的Content-Disposition头信息和Content-type头信息在servlet中下载方面的应用,详见DownloadPageServlet.java源码. 关

如何使用Java、Servlet创建二维码

归功于智能手机,QR码逐渐成为主流,它们正变得越来越有用.从候车亭.产品包装.家装卖场.汽车到很多网站,都在自己的网页集成QR码,让人们快速找到它们.随着智能手机的用户量日益增长,二维码的使用正在呈指数上升. 让我们来看看QR码的简要概述,以及如何在Java中生成它们. QR码介绍 QR码(Quick Response 快速响应码)是矩阵条形码(或二维码)的一种类型,最先为于汽车行业而设计.得益于其快速读取性和较大的存储容量,QR码开始在汽车行业以外流行.图案是在白色背景上由有序排列的黑色方块组

(转)如何使用Java、Servlet创建二维码

归功于智能手机,QR码逐渐成为主流,它们正变得越来越有用.从候车亭.产品包装.家装卖场.汽车到很多网站,都在自己的网页集成QR码,让人们快速找到它们.随着智能手机的用户量日益增长,二维码的使用正在呈指数上升. 让我们来看看QR码的简要概述,以及如何在Java中生成它们. QR码介绍 QR码(Quick Response 快速响应码)是矩阵条形码(或二维码)的一种类型,最先为于汽车行业而设计.得益于其快速读取性和较大的存储容量,QR码开始在汽车行业以外流行.图案是在白色背景上由有序排列的黑色方块组

【Java】Servlet 工作原理解析

Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础.因而掌握 Servlet 的工作原理是成为一名合格的 Java Web 技术开发人员的基本要求.本文将带你认识 Java Web 技术是如何基于 Servlet 工作,你将知道:以 Tomcat 为例了解 Servlet 容器是如何工作的?一个 Web 工程在 Servlet 容器中是如何启动的? Servlet 容器如何解析你在 web.xml 中定义的 Servlet ?用户的请

Ed Burns谈HTTP/2和Java EE Servlet 4规范

在2015年JavaLand大会上,Ed Burns展示了Java EE Servlet 4.0规范(JSR 369)的概要,演讲的重点在于Java EE平台对HTTP/2的支持.HTTP/2旨在解决现存HTTP规范中的问题,并引入新的功能,包括request/response多路复用.二进制帧传输(binary framing).数据流优先级.服务器推送和头信息压缩. Burns是Oracle公司的技术顾问之一,他从由于HTTP/1.1中固有的缺陷,导致当前典型网站的30多种资源传输到浏览器端

java之servlet入门操作教程一续

本节主要是在java之servlet入门操作教程一  的基础上使用myeclipse实现自动部署的功能 准备: java之servlet入门操作教程一 中完成myFirstServlet项目的创建:        myeclipse配置tomcat服务器  中tomcat的简单配置 目标: 学会myeclipse中项目在tomcat的自动部署 操作如下图流程: 1. 2. 3. 4. 5. 如上,项目已经运行起来了. 6.在浏览器中,输入路径url:http://localhost:8080/m

java/struts/Servlet文件下载与ftp文件下载

1.前端代码 使用超链接到Struts的Action或Servlet <a target="_blank" href="ftpFileAction!downloadFile.action?transUrl=ftp://10.0.2.1/tazi/a.xml">请点击下载</a> 2.后台代码 Action或Servlet String s1=transUrl; // transUrl是前台接受的参数 s1=s1.substring(6); s

Java基础——Servlet(八)文件上传下载

一.简单的文件上传常见的组件Smartupload , Apache 的 commons FileUploadSmartupload上传的步骤: 1.初始化上传上下文 2.准备上传 3.保存文件 <% if(request.getParameter("flag")!=null){ SmartUpload su=new SmartUpload(); su.initialize(pageContext); su.upload(); su.save("/upload_file

Java Web -- Servlet(9) Http协议详细分析--HTTP响应部分(Refresh、Content-Disposition、缓存例子)(2)

三.HTTP响应 一个HTTP响应代表服务器向客户端回送的数据,它包括: 一个状态行.若干消息头.以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开. (1)状态行 状态行用于描述服务器对请求的处理结果. (2)消息头 消息头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据. (3)实体内容 代表服务器向客户端回送的数据. 状态行 格式:HTTP版本号 状态码 原因叙述 举例:HTTP/1.1 2