• 10. HttpServletResponse接口


    HttpServletResponse接口

    HttpServletResponse简介

    Web服务器收到客户端的http请求,会针对每一次请求,创建一个用于代表响应的HttpServletResponse类型的response对象,开发者可以将要向客户端返回的数据封装到response对象中

    HttpServletResponse向客户端发送数据

    ServletResponse 接口有一个方法 getWriter()用于获取到一个输出流对象 PrintWriter
    该输出流对象是专门用于向客户端浏览器中输出字符数据的,称为标准输出流

    可以看下这个PrintWriter这个类 他继承了 Write类,所以我们也可以用Write类中的方法了!

    下面是向客户端返回数据(注册成功) 那些要配的 自己配置:

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");    //设置指定编码来解析响应数据
            String user = request.getParameter("user");
            String[] hobby = request.getParameterValues("hobby");
            
        //-----------------------下面开始回传数据:
            PrintWriter out = response.getWriter();    //首先从response中取得PrintWriter对象
            out.print("您好: " + user + ", 恭喜您注册成功! <br>");        //往客户端输出数据
            out.print("感谢您的注册! 请登录!");                        //往客户端输出数据
            out.close();                    //关闭流
            
        }

    允许上面代码后 会出现乱码:

    ??? 1346174610, ???????? <br>??????? ????
    甚至 <br> 这个标签都没解析 ,那么怎么解决:



    HttpServletResponse响应乱码的解决方案

    响应时会产生乱码的原因是在 HTTP 协议中规定,默认响应体的字符编码为ISO-8859-1。所以,若要解决乱码问题,就需要修改响应体的默认编码一般情况下,有两种方式可以修改

    • 方法一:HttpServletResponse 的 setCharacterEncoding(“utf-8”)方法,将编码修改为utf-8,然后再通过setHead(“Content-type”,”text/html;charset=UTF-8″);方法告诉客户端浏览器的编码方式
      代码:
      response.setCharacterEncoding("UTF-8");
      response.setHeader("Content-type", "text/html;charset=UTF-8");
    • 方法二:为了简便操作,开发者可以直接使用HttpServletResponse 的 setContentType(“text/html;charset=utf-8”)方法告诉浏览器的编码方式,该方法相当于方法一种的两条代码(方法1)
      代码:
      response. setContentType("text/html;charset=UTF-8");
    • 结局后的代码(两种方式 看注释!)
    • protected void doPost(HttpServletRequest request, HttpServletResponse response)
                  throws ServletException, IOException {
              request.setCharacterEncoding("utf-8");    //设置指定编码来解析响应数据
              String user = request.getParameter("user");
              String[] hobby = request.getParameterValues("hobby");
              
          //-----------------------下面开始回传数据:
              
              response.setCharacterEncoding("utf-8");        //把响应体用指定的编码来指定 
      //        response.setHeader("Content-type", "text/html;charset=UTF-8");    //跟浏览器将用UTF-8编码解析 一定别写错他的内容!! 
              response.setContentType("text/html;charset=UTF-8");            //这一句话顶setHeader的两句话!!
              
              //注意你设置编码时 一定要在取得PrintWriter对象之前!!!因为你取得PrintWriter对象了 在设置是没用的!
              
              
              
              PrintWriter out = response.getWriter();    //首先从response中取得PrintWriter对象
              out.print("您好: " + user + ", 恭喜您注册成功! <br>");        //往客户端输出数据 <br>也会被浏览器解析为换行的
              out.print("感谢您的注册! 请登录!");                        //往客户端输出数据
              out.close();                    //关闭流
              
          }

       注意:

    • 1.
      //        response.setHeader("Content-type", "text/html;charset=UTF-8");    //跟浏览器将用UTF-8编码解析 一定别写错他的内容!! 
              response.setContentType("text/html;charset=UTF-8");            //这一句话顶setHeader的两句话!!
    • 2.
              //注意你设置编码时 一定要在取得PrintWriter对象之前!!!因为你取得PrintWriter对象了 在设置是没用的!

    本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/14810567.html

  • 相关阅读:
    Hidden、ViewState、ControlState 区别
    使用 CSS3 中的伪类渲染表格
    IIS与Apache
    好奇怪的问题~
    博客可长可短-UnobtrusiveValidationMode的理解
    一路走来,一些感触,一些想法
    网页中一次导出多张Excel的问题
    [Leetcode][Python]56: Merge Intervals
    [Leetcode][Python]55: Jump Game
    [Leetcode][Python]54: Spiral Matrix
  • 原文地址:https://www.cnblogs.com/bi-hu/p/14810567.html
Copyright © 2020-2023  润新知