码迷,mamicode.com
首页 > Web开发 > 详细

JSP-response(HttpServletResponse)

时间:2018-03-18 16:21:47      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:content   ram   ref   文件的   解码   charset   contain   utf-8   msi   

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)

标签:content   ram   ref   文件的   解码   charset   contain   utf-8   msi   

原文地址:https://www.cnblogs.com/liu-wang/p/8594153.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!