1. <servlet>
    2. <servlet-name>downLoad</servlet-name>
    3. <servlet-class>controller.DownLoadController</servlet-class>
    4. </servlet>
    5. <servlet-mapping>
    6. <servlet-name>downLoad</servlet-name>
    7. <url-pattern>/downLoad</url-pattern>
    8. </servlet-mapping>

    download.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
        <head>
    
        </head>
        <body>
            <a href="downLoad?fileName=美甲.txt">下载</a>
        </body>
    </html>
    
    package controller;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.URLEncoder;
    
    public class DownLoadController extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //1.获取请求传递的文件名(需要下载的文件)
            String fileName=req.getParameter("fileName");
            //2.通过fileName找到服务器中真实的文件,找到文件需要一个输入流来读取文件内容
            InputStream is=new FileInputStream("D://Test//"+fileName);
            //3.如果文件名含有中文,可能出现乱码问题,可以通过以下方式解决
            fileName= URLEncoder.encode(fileName,"UTF-8");
            //4.设置响应的contentType
            resp.setContentType("application/x-msdownload");
            resp.setHeader("Content-disposition","attachment;filename="+fileName);
            //5.将内容响应回浏览器
            OutputStream os= resp.getOutputStream();
            byte[] b=new byte[1024];
            int length=is.read(b);
            while (length!=-1){
                os.write(b,0,length);
                os.flush();
                length=is.read(b);
            }
        }
    }
    

    1234.mp4 (8.22MB)