servlet 接收request发送过来的多维数组_Servlet技术之八:Servlet的请求响应处理

Request对象:

问题:

浏览器发起请求到服务器,会遵循HTTP协议将请求数据发送给服务器。那么服务器接受到请求的数据该怎么存储呢?不但要存,而且要保证完成性。

解决:

使用对象进行存储,服务器每接受一个请求,就创建一个对象专门的存储此次请求的请求数据。

实现:

request对象

解释:

服务器接收到浏览器的请求后,会创建一个Request对象,对象中存储了此次请求相关的请求数据。服务器在调用Servlet时会将创建的Request对象作为实参传递给Servlet的方法,比如:service方法。

特点:

1.request对象有服务器创建

2.一次请求创建一个request对象

3.生命周期为一次请求内,请求结束即销毁此次请求的request对象

package 

浏览器中输入如下内容来运行servlet:

c8d5596ca530e63a34739d380fb1211b.png

运行结果如下:

b07523229773e75cfc9cc7e9843c5312.png

Response对象:

问题:

在使用Request对象获取了请求数据并进行处理后,处理的结果如何显示到浏览器中呢?

解决:

使用Response对象

解释:

服务器在调用指定的Servlet进行请求处理的时候,会给Servlet的方法传递两个实参request和response。其中request中封存了请求相关的请求数据,而response则是用来进行响应的一个对象。

package 

91e09728ce0437daaf1a6d7cd5b5fd59.png

465c6290e3d11bc79a481b7488b4b3a5.png

代码修改如下:

//设置响应头

结果如下:

fb155ca763877e65c6113ed29e2316ed.png

请求乱码问题解决:服务器获取的请求数据乱码

Get方式请求:

方式一:每个数据都要单独的进行转换

String 

方式二:

在doGet()方法中使用: req.setCharacterEncoding(“utf-8”);

在tomcat服务器目录下的conf文件下找到server.xml文件,打开进行如下配置:

7576f6f9e4178c4f1df4bdbea2f67735.png

Post方式请求:

在doGet()方法中使用: req.setCharacterEncoding(“utf-8”);

响应乱码问题解决:浏览器中显示的服务器响应数据乱码

resp

流程总结:

Servlet的使用流程:

设置请求编码格式

设置响应编码格式

获取请求信息

处理请求信息

响应处理结果

数据流转流程:

浏览器------>服务器------->数据库

浏览器<------服务器<-------数据库

请求转发:

问题:

服务器在接收到浏览器的请求后,仅仅使用一个Servlet进行请求处理,会造成不同的Servlet逻辑代码冗余,Servlet的职责不明确。

解决:

使用请求转发。其实就是在一个servlet中调用其他的servlet。

特点:

1.降低了Servlet之间的代码冗余

2.一次请求转发内的Servlet共享此次请求request和response对象

3.浏览器9地址栏信息不改变。

req

b2a807f15cb87addfc5cfc8f5a5a5cd9.png

Request对象作用域

问题:使用请求转发后,不同的Servlet之间怎么进行数据的共享呢?或者说数据怎么从一个servlet流转给另外一个Servlet呢?

解决:使用request对象的作用域

使用:

request

作用:解决了一次请求内的不同Servlet的数据(请求数据+其他数据)共享问题。

作用域:基于请求转发,一次请求中的所有Servlet共享。

注意:

使用Request对象进行数据流转,数据只在一次请求内有效。

特点:

服务器创建

每次请求都会创建

生命周期一次请求

重定向

问题:

如果当前的请求,Servlet无法进行处理怎么办?

如果使用请求转发,造成表单数据重复提交怎么办?

解决:

使用重定向

使用:

response

本地路径为:uri

网络路径为:定向资源的URL信息

特点:

两次请求

浏览器地址栏信息改变

避免表单重复提交

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值