FACESOHO知行者
  • 首页
  • HTML
  • CSS
  • JavaScript
  • jQuery
  • Bootstrap
  • SQL
  • MySQL
  • PHP
  • python
  • C
  • C++
  • C#
  • Java
  • Go
  • 登录
  • 首页
  • 启蒙
  • 科技
  • 鸡汤
  • Search
  • 登录
  • 知行者,启蒙心得,做善良的国人,facesoho官网
Servlet 教程
Servlet 教程Servlet 简介Servlet 环境设置Servlet 生命周期Servlet 实例Servlet 表单数据Servlet 客户端 HTTP 请求Servlet 服务器 HTTP 响应Servlet HTTP 状态码Servlet 编写过滤器Servlet 异常处理Servlet Cookie 处理Servlet Session 跟踪Servlet 数据库访问Servlet 文件上传Servlet 处理日期Servlet 网页重定向Servlet 点击计数器Servlet 自动刷新页面Servlet 发送电子邮件Servlet 包Servlet 调试Servlet 国际化Servlet 有用的资源

1篇笔记写笔记

  1. #2101

       文人墨客

      

    对于一般的文件直接用 a 标签的话,如下代码所示。由于浏览器可以解析jpg和txt文件,故不会直接下载而是在其他网页打开:

    <a href="/IT/download/1.gif" rel="nofollow">下载图片</a>
    <a href="/IT/download/day10.doc" rel="nofollow">下载文档</a>
    <a href="/IT/download/day10.txt" rel="nofollow">下载笔记</a>
    

    如果想要完成直接下载的目的,可以通过Servlet进行操作,做了一个简单的html页面

    <a href="/IT/download?name=1.gif" rel="nofollow">下载图片1</a>
    <a href="/IT/download?name=day10.doc" rel="nofollow">下载文档1</a>
    <a href="/IT/download?name=day10.txt" rel="nofollow">下载笔记1</a>
    

    我为download注册了一个servlet,xml描写如下:

    <servlet>
        <servlet-name>DownloadServlet</servlet-name>
        <servlet-class>com.response.download.DownloadServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>DownloadServlet</servlet-name>
        <url-pattern>/download</url-pattern>
    </servlet-mapping>
    

    由于我的请求方式是get方式,所以只需在DownloadServlet这个类中重写doGet方法,代码实现如下:

    public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            
        //获取文件名
        String filename=request.getParameter("name");
        //防止读取name名乱码
        filename=new String(filename.getBytes("iso-8859-1"),"utf-8");
        //在控制台打印文件名
        System.out.println("文件名:"+filename);
        
         //设置文件MIME类型  
        response.setContentType(getServletContext().getMimeType(filename));  
        //设置Content-Disposition  
        response.setHeader("Content-Disposition", "attachment;filename="+filename);
        
        //获取要下载的文件绝对路径,我的文件都放到WebRoot/download目录下
        ServletContext context=this.getServletContext();
        String fullFileName=context.getRealPath("/download/"+filename);
        
        //输入流为项目文件,输出流指向浏览器
        InputStream is=new FileInputStream(fullFileName);
        ServletOutputStream os =response.getOutputStream();
        
        /*
         * 设置缓冲区
         * is.read(b)当文件读完时返回-1
         */
        int len=-1;
        byte[] b=new byte[1024];
        while((len=is.read(b))!=-1){
            os.write(b,0,len);
        }
        //关闭流
        is.close();
        os.close();
        
    }
    

尊贵的董事大人

英文标题不为空时 视为本栏投稿


需要关键字 描述 英文标题


X

分类导航

  • JavaScript
    • JavaScript 教程
    • HTML DOM 教程
    • jQuery 教程
    • AngularJS 教程
    • AngularJS2 教程
    • Vue.js 教程
    • React 教程
    • jQuery UI 教程
    • jQuery EasyUI 教程
    • Node.js 教程
    • AJAX 教程
    • JSON 教程
    • Highcharts 教程
    • Google 地图 教程
  • 服务端
    • PHP 教程
    • Python 教程
    • Python3 教程
    • Django 教程
    • Linux 教程
    • Docker 教程
    • Ruby 教程
    • Java 教程
    • C 教程
    • C++ 教程
    • Perl 教程
    • Servlet 教程
    • JSP 教程
    • Lua 教程
    • Scala 教程
    • Go 教程
    • 设计模式
    • 正则表达式
    • Flutter 教程
    • AppML 教程
    • Maven 教程
  • 数据库
    • SQL 教程
    • Mysql 教程
    • SQLite 教程
    • MongoDB 教程
    • Redis 教程
    • Memcached 教程
  • 移动端
    • Android 教程
    • Swift 教程
    • jQuery Mobile 教程
    • ionic 教程
    • Kotlin 教程
  • XML 教程
    • DTD 教程
    • XML DOM 教程
    • XSLT 教程
    • XPath 教程
    • XQuery 教程
    • XLink 教程
    • XPointer 教程
    • XML Schema 教程
    • XSL-FO 教程
    • SVG 教程
  • ASP.NET
    • ASP.NET 教程
    • C# 教程
    • Web Pages 教程
    • Razor 教程
    • MVC 教程
    • Web Forms 教程
  • Web Service 教程
    • Web Service 教程
    • WSDL 教程
    • SOAP 教程
    • RSS 教程
    • RDF 教程
  • 开发工具
    • Eclipse 教程
    • Git 教程
    • Firebug 教程
    • Svn 教程
  • 网站建设
    • HTTP 教程
    • 网站建设指南
    • 浏览器信息
    • 网站主机教程
    • TCP/IP 教程
    • 网站建设指南
    • 网站主机教程
    • W3C 教程

Advertisement

在线实例
·HTML 实例
·CSS 实例
·JavaScript 实例
·Ajax 实例
·jQuery 实例
·XML 实例
·Java 实例
字符集&工具
·HTML 字符集设置
·HTML ASCII 字符集
·HTML ISO-8859-1
·HTML 实体符号
·HTML 拾色器
·web实例归档
最新更新
·Servlet 有用的资源
·Servlet 国际化
·Servlet 调试
·Servlet 包
·Servlet 发送电子邮件
·Servlet 自动刷新页面
站点信息
·段子反馈
·红包宣传页
·诗和远方
·流程图在线
·缘聚缘散
·字数统计
FACESOHO知行者微信
唐诗 | 宋词 | 名句 | 搜索 | 免费 | 计算机 | WP | 留念 | 建网 | 英语
送人玫瑰 手有余香    Copyright © 2020年07月06日 All Rights Reserved

微信关注