Response

在doget/doPost方法中设置

手动设置状态码

 response.setStatus(404);

设置响应头

        //添加响应头
    response.addHeader("name","zhangsan");
      //设置
    response.setHeader("age","28");

重定向

 response.sendRedirect("xxxxServlet");

设置编码

//设置response查询的码表
    response.setCharacterEncoding("UTF-8");
    //通过一个头告知浏览器要用特定的编码。
    response.setContentType("text/html;charset=UTF-8");

图片下载

  //设置response查询的码表
    response.setCharacterEncoding("UTF-8");
    //通过一个头告知浏览器要用特定的编码。
    response.setContentType("text/html;charset=UTF-8");

    //使用response获得字节输出流
    ServletOutputStream out = response.getOutputStream();
    //获得服务器上的图片
    String realPath = this.getServletContext().getRealPath("sss.jgp");

    InputStream in = new FileInputStream(realPath);

    int len=0;
    byte[] buffer= new byte[1024];
    while ((len=in.read(buffer))>0){
        out.write(buffer,0,len);
    }
    in.close();
    out.close();

文件下载的基本代码(包括文件名字包含中文的解决方式)


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


    //获得要下载的文件的名称
    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();

Response:细节点
- response获得流不需要手动关闭,tomcat容器会帮忙关闭
- getWriter 和 getOutputStream不能同时调用

我是一个自学Android和JavaWeb的菜鸟。如果可以Flower一下我的GitHub。感激不尽
https://github.com/FoxconnPeter

你可能感兴趣的:(Response)