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

原文地址:https://www.cnblogs.com/bi-hu/p/14810567.html