java实现简单的文件下载

来源:互联网 发布:复利的威力 知乎 编辑:程序博客网 时间:2024/06/05 22:34

文件下载 需要在WebRoot 下创建images文件夹 并且放入test.txt文件 创建jsp文件夹 放入01.jsp
index.jsp 不变 web.xml需要配置servlet 适合初学者研究学习

//index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">    <title>My JSP 'index.jsp' starting page</title>    <meta http-equiv="pragma" content="no-cache">    <meta http-equiv="cache-control" content="no-cache">    <meta http-equiv="expires" content="0">        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    <meta http-equiv="description" content="This is my page">    <!--    <link rel="stylesheet" type="text/css" href="styles.css">    -->  </head>  <body>  <a href="jsp/01.jsp">[下载]</a>  </body></html>

//jsp文件夹下的01.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">  </head>  <body>    下载:<a href="downloadServlet.do?filename=test1.txt">test1.txt</a> &nbsp;&nbsp; ${errorResult}  </body></html>

//文件下载serlvet

package com.kero99.ygc.download;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import javax.servlet.RequestDispatcher;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 DownloadServlet extends HttpServlet {    public void doGet(HttpServletRequest req, HttpServletResponse resp)            throws ServletException, IOException {        //获取文件下载路径        String path = getServletContext().getRealPath("/") + "images/";        String filename = req.getParameter("filename");         File file = new File(path + filename);        if(file.exists()){            //设置相应类型application/octet-stream            resp.setContentType("application/x-msdownload");            //设置头信息                 Content-Disposition为属性名  附件形式打开下载文件   指定名称  为 设定的filename            resp.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");            //输入流写入输出流            InputStream inputStream = new FileInputStream(file);            ServletOutputStream ouputStream = resp.getOutputStream();            byte b[] = new byte[1024];            int n ;            //循环读取 !=-1读取完毕            while((n = inputStream.read(b)) != -1){                //写入到输出流 从0读取到n                ouputStream.write(b,0,n);            }            //关闭流、释放资源            ouputStream.close();            inputStream.close();        }else{            req.setAttribute("errorResult", "文件不存在下载失败!");            RequestDispatcher dispatcher = req.getRequestDispatcher("jsp/01.jsp");            dispatcher.forward(req, resp);        }    }    public void doPost(HttpServletRequest req, HttpServletResponse resp)            throws ServletException, IOException {        doGet(req,resp);    }}

//web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">  <display-name>20170428_V1.0_download</display-name>  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list>  <servlet>    <servlet-name>DownloadServlet</servlet-name>    <servlet-class>com.kero99.ygc.download.DownloadServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>DownloadServlet</servlet-name>    <url-pattern>/downloadServlet.do</url-pattern>  </servlet-mapping></web-app>
0 0
原创粉丝点击