0
点赞
收藏
分享

微信扫一扫

JavaWeb ------ HttpServletResponse类


文章目录

  • ​​HttpServletResponse​​
  • ​​简单说明​​
  • ​​两个输出流的简要说明​​
  • ​​给客户端回传字符串数据​​
  • ​​中文乱码​​
  • ​​问题描述​​
  • ​​解决方法​​
  • ​​解决方法一​​
  • ​​解决方法二(推荐)​​

HttpServletResponse

简单说明

      HttpServletResponse 类和 HttpServletRequest 类一样。每次请求进来,Tomcat 服务器都会创建一个 Response 对象传 递给 Servlet 程序去使用。
      HttpServletRequest 表示请求过来的信息,HttpServletResponse 表示所有响应的信息, 我们如果需要设置返回给客户端的信息,都可以通过 HttpServletResponse 对象来进行设置

两个输出流的简要说明

类型

用法

解释

字节流

getOutputStream();

常用于下载(传递二进制数据)

字符流

getWriter();

常用于回传字符串(常用)

重要说明:

  • 两个流同时只能使用一个,否则就会报错;

给客户端回传字符串数据

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter writer = response.getWriter();
//下面两种都可以
writer.print("response1");
writer.write("response2");
}

中文乱码

问题描述

​writer.print("我是中文");​

JavaWeb ------ HttpServletResponse类_客户端

解决方法

解决方法一

JavaWeb默认字符集为​​ISO-8859-1​​,不支持中文,所以我们需要自己设置

​response.setCharacterEncoding("UTF-8");​​此时暴露了新问题乱码

JavaWeb ------ HttpServletResponse类_解决方法_02


为什么呢?因为我们刚刚设置的是服务器的字符集为​​UTF-8​​​,但此时客户端的字符集与服务端不同,造成编码格式不匹配,简单来说就是客户端浏览器编码格式不匹配服务端,因此可以通过设置响应头解决,再加上​​response.setHeader("Content-Type", "text/html; charset=UTF-8");​​即可,这样浏览器便知道了你的编码格式

完整代码如下:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setHeader("Content-Type", "text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter writer = response.getWriter();
writer.print("我是中文");
}

解决方法二(推荐)

推荐第二种,它会同时设置服务器和客户端都使用 UTF-8 字符集,还设置了响应头

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");
PrintWriter writer = response.getWriter();
writer.print("我是中文");
}


举报

相关推荐

0 条评论