JSP-response(HttpServletResponse)

Posted 8亩田

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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细节 

 

以上是关于JSP-response(HttpServletResponse)的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot之拦截器

Serverlet程序

HttpServletRequest

获取当前的项目地址

用户登录拦截器

获取访问者的IP