request对象

6 request对象

6.1 获取请求参数

问题1、什么是请求参数?

浏览器在发送请求访问服务器的过程中,通过请求携带给服务器的数据就是请求参数。比如:在浏览器的地址栏中输入URL地址,URL地址后面可以拼接参数:
request对象

或者也可以通过form表单和表单项向服务器发送数据

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

request对象
request对象

示例:
request对象

问题3、获取请求参数时的中文乱码问题?

乱码产生的原因:在中文数据进行编码时 和进行解码时 使用的码表不一致会造成乱码问题。

张: —(编码)–> 11001010 10110101 00111100

飞: —(编码)–> 11100010 10010111 10101101

解决乱码: 保证编码时和解码时使用的码表一致!

浏览器向服务器发送数据时, 会使用utf-8码表进行编码。

只需要通知服务器,在接收数据时也使用相同的码表进行解码即可。


(1)如果是POST提交, 不管是哪个版本的tomcat服务器, 通过POST提交的中文数据, 在接收时都会出现乱码问题。

解决方式:只需要在任何获取参数的代码之前设置一行代码即可:

request对象

(2)如果是GET提交, 并且是tomcat8.0及以后的版本中, 通过GET提交的中文数据, 在接收时默认是没有乱码的(tomcat8.0设置了GET提交时的编码, 所以没有乱码)

(3)如果是GET提交, 并且是tomcat7.0及以前的版本中, 通过GET提交的中文数据, 在接收时也是有中文乱码问题的。解决方案是:

找到tomcat/conf/server.xml文件,在修改端口的Connector标签上添加一个属性,例如:

request对象

6.2 实现请求转发

请求转发是一种资源的跳转方式,此外重定向也是一种资源的跳转方式

请求转发的特点:

(1)请求转发是一次请求,一次响应

(2)请求转发前后,地址栏地址不会发生变化

(3)请求转发前后,request对象是同一个(域对象)

(4)进行转发的两个资源必须属于同一个Web应用(属于不同web应用的资源之间是不能进行转发的)

实现请求转发:

request对象

代码示例:从/day10/RequestDemo2 转发到 /day10/index.jsp

request对象

6.3 作为域对象使用

在request对象中保存了一个map集合,可以往集合中存入一些数据,再将请求转发到另外一个资源之后,还可以通过request将之前存入的数据再取出来。这就是通过域对象带数据到目的地,request就是一个域对象。

如果一个对象具有可以被访问的范围,并且对象上有一个map集合,在该范围内,可以通过对象上的map集合实现数据的共享。

request域对象提供了存取数据的方法
request对象

示例:模拟查询所有门店功能(转发+域对象)

DoorListServlet代码:
request对象

doorList.jsp代码:
request对象