【JavaWeb】Servlet学习笔记-4

目录

一、HttpServletResponse

        1.下载文件

                ①、新建一个module:03_HttpServletResponse,并补全其目录结构。

                ②、创建一个Servlet:FileServlet,并在web.xml中注册

                 ③、在FileServlet中编写实现下载文件的代码

                ④、运行结果


一、HttpServletResponse

        web服务器收到客户端的http请求后,会分别创建一个代表请求的HttpServletRequest对象和一个代表响应的HttpServletResponse对象

                如果要获取客户端请求过来的参数,找httpServletRequest

                如果要响应客户端一些信息,找HttpServletRsponse

        1.下载文件

                通过客户端下载resources中的一张图片

                ①、新建一个module:03_HttpServletResponse,并补全其目录结构。

                

                ②、创建一个Servlet:FileServlet,并在web.xml中注册

                

    <servlet>
        <servlet-name>FileServlet</servlet-name>
        <servlet-class>com.kuang.servlet.FileServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>FileServlet</servlet-name>
        <url-pattern>/fileServlet</url-pattern>
    </servlet-mapping>

                 ③、在FileServlet中编写实现下载文件的代码

                        首先要获取要下载的文件的路径==>获取下载的文件的文件名==>设置让浏览器支持下载文件(content-Disposition),若文件名是中文,需要设置编码(URLEncoder.encode())==>获取下载文件的输入流==>创建缓冲区==>获取OutputStream对象==>将FileOutputStream流写入到buffer缓冲区,使用OutputStream将缓冲区的数据输出到客户端==>关闭流

public class FileServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        1.获取下载文件的路径
        String realPath = "F:\\JAVA\\8_KuangStudyJava\\02_JavaWeb\\01_Servlet\\代码\\maven-01-servlet\\03_HttpServletResponse\\src\\main\\resources\\zhuyin.jpg";
//        2.获取文件名
        String fileName = realPath.substring(realPath.lastIndexOf("\\") + 1);
//        3.设置让浏览器支持下载文件
        resp.setHeader("content-Disposition","attachment;fileName=" + fileName);        
//        若文件名是中文需要设置编码:
//        resp.setHeader("content-Disposition","attachment;fileName" + URLEncoder.encode(fileName,"UTF-8"));        
//        4.获取下载文件的输入流
        FileInputStream in = new FileInputStream(realPath);
//        5.创建缓冲区
        int len = 0;
        byte[] buffer = new byte[1024];
//        6.获取outputStream对象
        ServletOutputStream out = resp.getOutputStream();
//        7.将FileInputStream写入到buffer缓冲区中,使用OutputStream将缓冲区的数据输出到客户端
        while ((len = in.read(buffer)) > 0){
            out.write(buffer,0,len);
        }
//        8.关闭流
        in.close();
        out.close();
    }
}

                ④、运行结果

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值