JavaWeb——HttpServletResponse

Web服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求de HttpServletRequest对象,和一个代表响应的一个HttpServletResponse;

  • 如果要获取客户端请求过来的参数:找HttpServletRequest
  • 如果要给客户端响应一些信息:找HttpServletResponse

1、简单分类

负责向浏览器发送数据的方法:

ServletOutputstream getOutputstream() throws IOException;
Printwriter getwriter() throws IOException;

负责向浏览器发送响应头的方法:

void setCharacterEncoding(String var1);
void setContentLength(int var1);
void setContentLengthLong(long var1);
void setContentType(String var1);
void setDateHeader(String varl,long var2)
void addDateHeader(String var1,long var2)
void setHeader(String var1,String var2);
void addHeader(String var1,String var2);
void setIntHeader(String var1,int var2);
void addIntHeader(String varl,int var2);

2、下载文件

  • 要获取下载文件的路径
  • 下载的文件名是啥?
  • 设置想办法让浏览器能够支持下载我们需要的东西
  • 获取下载文件的输入流
  • 创建缓冲区
  • 获取OutputStream对象
  • 将FileOutputStream流写入到buffer缓冲区
  • 使用OutputStream将缓冲区中的数据输出到客户端!
  •         // 1. 要获取下载文件的路径
            String realPath = "F:\\code\\IDEA\\workspace_test\\javaweb-02-servlet\\HttpResponse\\src\\main\\resources\\1.png";
            System.out.println("下载文件的路径:"+realPath);
            // 2. 下载的文件名是啥?
            String fileName = realPath.substring(realPath.lastIndexOf("\\") + 1);
            // 3. 设置想办法让浏览器能够支持(Content-Disposition)下载我们需要的东西,中文文件名URLEncoder.encode编码,否则有可能乱码
            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. 将FileOutputStream流写入到buffer缓冲区,使用OutputStream将缓冲区中的数据输出到客户端!
            while ((len=in.read(buffer))>0){
                out.write(buffer,0,len);
            }
            in.close();
            out.close();

    3. 实现重定向

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /*
        * 等价于 resp.setHeader("Location","/r/img");
        *       resp.setStatus(302);
        * */
        resp.sendRedirect("/h1/filedownload");
    }

ps:重定向和转发的区别?

相同点:页面都会实现跳转

不同点:请求转发的时候,url不会产生变化

              重定向的时候,url地址栏会发生变化;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值