JavaWeb学习笔记 (五) HttpServletResquest与HttpServletResponse

一.HttpServletRequest对象

1. HttpServletRequest对象

这个对象代表了客户端的请求,当客户端请求服务器时,客户端所有的请求信息都封装在了这个对象中,通过这个对象中的一些方法可以获取到客户端请求的一些信息。

  • 获取请求头中的信息

在这里插入图片描述

  • 获取请求体中的信息
    在这里插入图片描述

2. HttpServletRequest中文乱码问题的解决

由于编码的问题,使得客户端与服务器在传递中文信息时,会出现乱码问题。

(1) get请求中的乱码问题

get请求的数据,在url地址栏已经进行过编译了,由与getParameter()使用ISO-8859-1解码,因此出现了中文乱码的问题。

  • 解决方法一

可以在收到数据的时候,先得到其字符数组,然后在用UTF-8对其进行解码。
String username new String(userName.getBytes(“ISO-8859-1”) , “UTF-8”);

  • 解决方法二

可以直接在tomcat中配置,以后get请求过来的数据都是用utf-8编码。
在这里插入图片描述
在server.xml中的这一行后面加上URIEncoding=“UTF-8”

(2) post请求中的乱码问题

  • 解决方法

post方法是以流的方式传输数据,在取字符之前,设置下对客户端重新编码的编码格式,覆盖request中默认的ISO-8859-1。
request.setCharacterEncoding(“UTF-8”);

这行代码应该放在获取参数之前,该方法对get无效,因为get在url已经编码过了

二. HttpServletResponse对象

1.HttpServletResponse对象

该对象负责返回数据给客户端
在这里插入图片描述
思考两种方式的应用场景?

2. HttpServletResponse中文乱码问题的解决

分为字节输出流和字符输出流两种,需要确保服务器出去数据的编码和浏览器解码的编码相同。

(1)字符输出流在这里插入图片描述

(2) 字节输出流

在这里插入图片描述
不管是字节流还是字符流,以上代码都可以通过下面这行代码替代

response.setContentType(“text/html;charset=utf-8”);
表示响应的文本为html,浏览器使用utf-8去读服务器传来的数据。

猜你喜欢

转载自blog.csdn.net/Time__Lc/article/details/85112511