一、request和response介绍

request是代表HTTP请求信息的对象 ,(客户请求时创建该对象)

response是代表HTTP响应信息的对象,(服务器响应时创建该对象)

当浏览器发请求访问服务器中的某一个Servlet时,服务器将会调用Servlet中的service方法来处理请求。在调用service方法之前会创建出request和response对象。

request对象中封装了浏览器发送给服务器的请求信息(请求行、请求头、请求实体等),response对象中将会封装服务器要发送给浏览器的响应信息(状态行、响应头、响应实体),在service方法执行完后,服务器再将response中的数据取出,按照HTTP协议的格式发送给浏览器。

每次浏览器访问服务器,服务器在调用service方法处理请求之前都会创建request和response对象。(即,服务器每次处理请求都会创建request和response对象)

在请求处理完,响应结束时,服务器会销毁request和response对象

二、request对象
(一)获取请求参数
问题1、什么是请求参数?

请求参数,就是浏览器发送给服务器的数据(不区分请求方式)

例如:通过表单向服务器提交的用户名、密码等,或者在超链接后面通过问号提交的数据,都是请求参数。

问题2、如何获取请求参数?

request.getParameter(String paramName)

根据请求参数的名字获取对应的参数值,返回值是一个字符串

如果一个参数有多个值,该方法只会返回第一个值

如果获取的是一个不存在的参数,返回值为null

request.getParameterValues(String paramName)

根据请求参数的名字获取该名字对应的所有参数值组成的数组,返回值是一个字符串数组,其中包含了这个参数名对应的所有参数值

如果获取的是一个不存在的参数,返回值为null

问题3、获取请求参数时的中文乱码问题?
在获取中文的请求参数时,可能会出现乱码问题(和请求方式、tomcat服务器版本有关),具体可以分为以下三种情况:

请求是GET提交

GET提交的中文参数,在获取时不会出现乱码问题!(8.0以后的tomcat包括8.0在获取GET提交的中文参数时,已经处理中文乱码问题。)

请求是POST提交

不管是哪个版本的tomcat服务器,在获取中文参数时,都会出现乱码问题。因为tomcat底层在接收POST提交的参数时,默认会使用iso8859-1编码接收,而这个编码中没有中文字符,所以在接收中文参数时,一定会出现中文乱码问题!