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对象了 在设置是没用的!