JavaWeb-使用ServletContext下载文件

Posted 曾经啊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb-使用ServletContext下载文件相关的知识,希望对你有一定的参考价值。

代码如下:

public class DownloadServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        // 获取文件存放路径
        String filePath = this.getServletContext().getRealPath("/WEB-INF/classes/测试.txt");
        // 获取文件名称
        String fileName = filePath.substring(filePath.lastIndexOf("/") + 1);

        // 创建文件对象
        File file = new File(filePath);
        // 创建文件输入流
        FileInputStream in = new FileInputStream(file);
        // 设置响应头部信息,使浏览器能识别并弹出下载框
        resp.setHeader("Content-Disposition",
                "attachment;fileName=" + URLEncoder.encode(fileName,"utf-8"));
        // 创建文件输出流
        ServletOutputStream out = resp.getOutputStream();
        // 将文件读进缓冲区,并从流中输出
        int len = 0;
        byte[] buffer = new byte[1024];
        while ((len = in.read(buffer))>0) {
            out.write(buffer,0,len);
        }
        // 关闭输入输出流
        in.close();
        out.close();
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

web.xml 配置:

<servlet>
    <servlet-name>download</servlet-name>
    <servlet-class>com.study.servletcontext.DownloadServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>download</servlet-name>
    <url-pattern>/download</url-pattern>
  </servlet-mapping>

 

以上是关于JavaWeb-使用ServletContext下载文件的主要内容,如果未能解决你的问题,请参考以下文章

javaweb域对象-ServletContext

深入分析JavaWeb servletConfig 与servletContext

JavaWeb基础: ServletContext

javaweb-servletContext域对象

JavaWeb项目启动过程与ServletContext

JavaWeb学习笔记:ServletConfig()和ServletContext()