JSP-response(HttpServletResponse)

1 HttpServletResponse概述

2 Response 运行过程

3 通过抓包工具抓取Http响应

4 响应行

 

 

5 设置响应头

 

 

set  和add的区别

 

 

6 重定向

需要完成分析‘

6 设置响应体

6.1 设置文本和乱码

        //设置response查询的码表
        //response.setCharacterEncoding("UTF-8");
        
        //通过一个头 Content-Type 告知客户端使用何种码表
        //response.setHeader("Content-Type", "text/html;charset=UTF-8");
        
        response.setContentType("text/html;charset=UTF-8");
        
        PrintWriter writer = response.getWriter();
        //writer.write("hello response!!!");
        writer.write("你好");

 

 6.2 设置字节

 6.3 文件下载

 

 

    //获得要下载的文件的名称
        String filename = request.getParameter("filename");//a.flv

        //要下载的这个文件的类型-----客户端通过文件的MIME类型去区分类型
        response.setContentType(this.getServletContext().getMimeType(filename));
        //告诉客户端该文件不是直接解析 而是以附件形式打开(下载)
        response.setHeader("Content-Disposition", "attachment;filename="+filename);

        //获取文件的绝对路径
        String path = this.getServletContext().getRealPath("download/"+filename);
        //获得该文件的输入流
        InputStream in = new FileInputStream(path);
        //获得输出流---通过response获得的输出流 用于向客户端写内容
        ServletOutputStream out = response.getOutputStream();
        //文件拷贝的模板代码
        int len = 0;
        byte[] buffer = new byte[1024];
        while((len=in.read(buffer))>0){
            out.write(buffer, 0, len);
        }

        in.close();
        //out.close();

 

6.4 文件下载(中文)

 

 

        //*******文件名称是中文的下载*******


        //获得要下载的文件的名称
        String filename = request.getParameter("filename");//????.jpg
        //解决获得中文参数的乱码----下节课讲
        filename = new String(filename.getBytes("ISO8859-1"),"UTF-8");//美女.jpg

        
        //获得请求头中的User-Agent
        String agent = request.getHeader("User-Agent");
        //根据不同浏览器进行不同的编码
        String filenameEncoder = "";
        if (agent.contains("MSIE")) {
            // IE浏览器
            filenameEncoder = URLEncoder.encode(filename, "utf-8");
            filenameEncoder = filenameEncoder.replace("+", " ");
        } else if (agent.contains("Firefox")) {
            // 火狐浏览器
            BASE64Encoder base64Encoder = new BASE64Encoder();
            filenameEncoder = "=?utf-8?B?"
                    + base64Encoder.encode(filename.getBytes("utf-8")) + "?=";
        } else {
            // 其它浏览器
            filenameEncoder = URLEncoder.encode(filename, "utf-8");                
        }



        //要下载的这个文件的类型-----客户端通过文件的MIME类型去区分类型
        response.setContentType(this.getServletContext().getMimeType(filename));
        //告诉客户端该文件不是直接解析 而是以附件形式打开(下载)----filename="+filename 客户端默认对名字进行解码
        response.setHeader("Content-Disposition", "attachment;filename="+filenameEncoder);

        //获取文件的绝对路径
        String path = this.getServletContext().getRealPath("download/"+filename);
        //获得该文件的输入流
        InputStream in = new FileInputStream(path);
        //获得输出流---通过response获得的输出流 用于向客户端写内容
        ServletOutputStream out = response.getOutputStream();
        //文件拷贝的模板代码
        int len = 0;
        byte[] buffer = new byte[1024];
        while((len=in.read(buffer))>0){
            out.write(buffer, 0, len);
        }

        in.close();
        //out.close();

 

7 response细节 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要带HttpServletResponse response参数,需要在方法的参数列表中添加一个类型为javax.servlet.http.HttpServletResponse的参数。例如,在doGet方法中,可以这样定义参数:public void doGet(HttpServletRequest request, HttpServletResponse response)。 这样,当客户端发出请求时,服务器会创建一个response对象,并将其传递给doGet方法。你可以在方法内部使用response对象来完成对客户端的响应工作,如发送HTTP响应、设置响应头、写入响应内容等操作。 值得注意的是,HttpServletResponse是javax.servlet.http.HttpServletResponse接口的一个实现类,它是ServletResponse接口的子接口。这意味着HttpServletResponse对象具有ServletResponse对象的所有功能,并且还提供了专门用于处理HTTP协议的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [HttpServletResponse response详解](https://blog.csdn.net/m0_37834446/article/details/81385843)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Jspresponse对象的所有属性详细介绍](https://download.csdn.net/download/weixin_38698590/14046947)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘大望

谢谢你请的咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值