HttpServlet请求转发与重定向

1.概念

在这里插入图片描述
在这里插入图片描述

2.请求转发getrequestDispatcher

在这里插入图片描述
在这里插入图片描述
1.将一个servlet的请求与响应参数转发到另一个servlet,两个servlet公用同一个request(可以共享参数parameter)和response,同时,页面也会自动跳转(url没变)。

2.请求转发会将用户提交的请求内部转移请求的请求合并/加强
(第一行为用户提交的请求,第二行为转发的请求)
在这里插入图片描述
3.用forward和include两个方法进行转发后的响应不同:

forward(使用该方法的servlet不打开输出流,将响应转交给下一个servlet,即转发后的servlet可以打开输出流):
两个response相同
示意图:
在这里插入图片描述
include(合并了使用该方法的servlet的响应与转发后servlet的响应,即包含了两个servlet的响应,转发前和转发后的输出流会按照逻辑顺序正常打开):
两个response不相同
示意图:
在这里插入图片描述

3.重定向sendRedirect与数据传输

1.传输数据:

resp.sendRedirect("other?pname=aa&page=11");//再次访问的servlet对应的url和要传的参数(pname,page)

此时参数会出现在url中,在另一个servlet里用getparameter方法即可得到参数

2.中文乱码问题解决方案:
在第一个servlet上,在重定向前对参数进行编码打散:
在这里插入图片描述
重定向后的servlet上进行组装,同时再用一次解决GET乱码问题的方法:
在这里插入图片描述
3.重定向可以跨应用传输(跨项目):
在这里插入图片描述
4.重定向和请求转发的区别与选择:
在这里插入图片描述在这里插入图片描述

其中的防止表单重复提交:
请求转发(转发后,url还是在some内):
在这里插入图片描述
重定向(重定向后,url转移到other):
在这里插入图片描述
因为在提交请求时服务器可能进行大量计算,重定向到另一个负荷小的应用可以防止恶意刷新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值