JavaWeb10(response下载文件)

Response下载文件

1.创建一个webapp项目
1)
在这里插入图片描述
2)
在这里插入图片描述
3)将Maven的结构搭建完整
在这里插入图片描述
4)更改web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
         metadata-complete="true">
</web-app>

5)在resources中放一个图片
在这里插入图片描述
2.编写FileServlet

package com.hao.servlet;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
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.net.URLEncoder;

public class FileServlet extends HttpServlet {
    
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        //1.获取下载文件地址
        String realPath= "E:\\IDEA\\JavaWeb-03-Servlet\\response_download\\target\\classes\\学生证.jpg";
        //2.获取下载文件名
        String fileName = realPath.substring(realPath.lastIndexOf("\\")+1);
        //3.设置支持下载的消息头
        resp.setHeader("content-disposition", "attachment;filename="+ URLEncoder.encode(fileName,"utf-8"));
        //4.获取下载文件的输入流
        FileInputStream fileInputStream = new FileInputStream(realPath);
        //5.创建缓冲区
        int len=0;
        byte[] buffer = new byte[1024];
        //6.获取OutputStream对象
        ServletOutputStream outputStream = resp.getOutputStream();
        //7.FileOutputStream流写入缓冲区,使用OutputStream讲缓冲区中的数据输出到客户端
        while((len=fileInputStream.read())>0){
    
    
            outputStream.write(buffer);
        }
        outputStream.close();
        fileInputStream.close();

    }

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

3.编写映射

<!--注册Servlet-->
<servlet>
        <servlet-name>response_download</servlet-name>
        <servlet-class>com.hao.servlet.FileServlet</servlet-class>
    </servlet>
<!--Servlet映射路径(请求路径)-->
    <servlet-mapping>
        <servlet-name>response_download</servlet-name>
        <url-pattern>/download</url-pattern>
    </servlet-mapping>

4.更改Tomcat war包
在这里插入图片描述

测试访问:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_51224492/article/details/118702179