HttpServletResponse
>负责返回数据给客户端
>输出数据到页面上
//以字符流的方式写数据
response.getWriter().write("<h1>hello response</h1>");
//以字节流的方式写数据
response.getOutputStream().write("hello2 response".getBytes());
>响应的数据中有中文,那么有可能出现中文乱码
>以字符流输出 response.getWriter()
//写出去的文字,默认使用的是ISO-8859-1,可以指定写出去的时候,使用什么编码
//1、指定输出到客户端的时候,这些文字使用utf-8
response.setCharacterEncoding("UTF-8");
//2、直接指定浏览器看着份数据的时候,使用什么编码
response.setHeader("Content-Type", "text/html;charset=UTF-8");
response.getWriter().write("我爱中国!");
>以字节流输出 response.getOutputStream()
1、直接指定浏览器看这份数据的时候,使用什么编码
response.setHeader("Content-Type", "text/html;charset=UTF-8");
//2、指定输出用的编码
response.getOutputStream().write("我爱中国!".getBytes());
默认情况下,getOutputStream输出使用的是UTF-8编码(可以看源码),如果想指定具体的编码,可以在获取byte数组的时候指定
String csn = Charset.defaultCharset().name();
System.out.println("默认的String里面的getBytes方法使用的是:" + csn);
输出:默认的String里面的getBytes方法使用的是:UTF-8
不管是字节流还是字符流,直接使用一行代码就可以了。
response.setContentType("text/html;charset=UTF-8");
然后在写数据即可。