HttpServletResponse类的介绍和使用+解决响应传递给客户端数据的中文乱码问题

HttpServletResponse类作用

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

他是通过流来给客户端传递数据的

响应有两个流,如下

两个输出流的说明

左边是名称,中间是获取这些流的方法,右边是作用

字节流		getOutputStream()	常用于下载(传递二进制数据)
字符流		getWriter()			常用于回传字符串(非常常用)

两个流同时只能使用一个,也就是用了字节流就不能用字符流了,用了字符流就不能用字节流了
比如我们同时用一下这两个方法:
在这里插入图片描述然后我们运行在这里插入图片描述报错了,说我们用了一个就不要用另一个了

向客户端传数据

要求,向客户端回传字符串数据
步骤

获取字符流
向客户端回传数据

我们先定义一个PrintWriter对象来接收获取到的字符流对象
然后通过字符流对象的printin()方法或者write()的方法向客户端回传数据
括号中填入我们需要回传的字符
在这里插入图片描述这个东西如果只是传递回英文是没有任何问题的,但是如果我们传递的数据中文,则会导致乱码
在这里插入图片描述

解决中文乱码问题

中文乱码一般都是字符集不匹配的问题,我们先来瞧瞧这个响应的字符集是什么
HttpServletResponse对象的getCharacterEncoding()方法,这个方法的作用就是获得字符集的类型,与之相对的就是我们的setServletResponse一个get一个set
(咱这里查看的都是咱服务器的字符集)
在这里插入图片描述可以看到这里服务器的字符集是ISO-8859-1,这个字符集不支持中文
我们可以设置一下服务器的编码,但是咱们设置成UTF-8的话我们的google浏览器还是不能正常显示,这就涉及到我们浏览器的编码(字符集)的问题了,这个浏览器一般默认是GBK字符集


注意很重要一点,我们这两个方法的代码部分都必须放在获取流对象的前面,不然会失效
这两个方法都是通过设置浏览器和服务器的编码集来解决乱码的

解决方法一 (不推荐)

虽然咱们可以通过设置服务器编码为GBK来解决乱码问题但是也只能应一时之急,如果换了个浏览器可能就不行了,所以我们需要通过服务器来设置浏览器的字符集
Response对象的setHeader()方法,这个方法可以设置响应的请求头,有两个参数,第一个参数是请求头的名称,第二个参数是请求头的值

原理:
通过响应头使浏览器使用某种字符集编码

例子:
在这里插入图片描述
解释:
Content-Type这里就是告诉我们要设置响应头中的什么东西,这就是一个响应头名称

Content-Type的作用
该实体头的作用是让服务器告诉浏览器它发送的数据属于什么文件类型
当Content-Type 的值设置为text/html会让浏览器把接收到的实体内容以HTML格式解析,然后后面跟着的charset设置我们的字符编码集

看我们的响应头:在这里插入图片描述可以看到这里浏览器的编码变成了UTF-8,然后我们的服务器编码就和浏览器编码同意都是UTF-8了

方法二 (推荐)

HttpServletResponse对象还有一个方法setContentType(),这个方法可直接设置ContentType()响应头的值
在这里插入图片描述这个可以直接在括号里面设置浏览器的编码和对文本的编译(text/html部分是把文本用html页面来解析)

再强调一次:
注意很重要一点,我们这两个方法的代码部分都必须放在获取流对象的前面,不然会失效

到!此!结!束!

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
在Java中,HttpServletResponse响应乱码问题是一个常见的问题。通常情况下,当我们在响应中输出中文字符时,可能会遇到乱码的情况。为了解决这个问题,我们可以使用setCharacterEncoding方法来设置响应的字符编码。通过在HttpServletResponse对象上调用setCharacterEncoding方法,我们可以将响应的字符编码设置为UTF-8,这样就可以正确地显示中文字符了。 另外,还可以通过设置ContentType来指定响应的文本型为"text/html;charset=UTF-8",这样也可以解决中文乱码问题。通过调用HttpServletResponse对象的setContentType方法,传入指定的内容型即可。 总结一下,解决HttpServletResponse响应乱码问题的步骤包括: 1. 设置响应的字符编码,可以使用setCharacterEncoding方法将字符编码设置为UTF-8。 2. 设置响应的文本型为"text/html;charset=UTF-8",可以使用setContentType方法进行设置。 通过这些步骤,我们可以有效地解决HttpServletResponse响应乱码问题,并确保中文字符能够正确地显示出来。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Java中HttpServletResponse响应中文出现乱码问题](https://download.csdn.net/download/weixin_38667403/12796340)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [HttpServletResponse以及解决乱码问题](https://blog.csdn.net/qq_36335126/article/details/108968049)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值