解析Servlet中【转发机制和重定向】的区别

了解Servlet转发机制点击关于转发机制

了解Servlet重定向点击关于重定向

来看看两者的代码对比

转发:request.getRequesrDispatcher("要跳转的资源的url")forward(requset,response);

重定向:response.sendRedirect(resquest.getContextPath()+"web.xml中定义的需要跳转资源的url");
//resquest.getContextPath()获取到的是资源的项目名

1.两者形式上的区别:

转发机制:

转发的是一次请求,无论资源之间进行了多少次的转发都是一次请求,即都在同一个request当中,使用的是同一个request对象,所以浏览器地址栏上的地址始终是第一个资源的地址。
(这是由于调用forward方法的时候,会将当前的request和response对象传递给下一个Servlet.)

.
由于是后端资源与资源之间的跳转,所以代码中的路径不需要加项目名。

重定向:

重定向是多次请求,浏览器地址栏上发送的请求地址为第一个资源的地址,最终再浏览器地址栏上显示的地址是最后一次请求对应资源的地址。
.
由于是response对象将将其中的路径重新响应给浏览器,浏览器接收到响应的信息之后,自发的向服务器发起一次新的请求,是前端对服务器的请求,所以路径中需要包含项目名。

2.两者本质上的区别:

转发机制:

是由web服务器来控制的,A资源跳转到B资源这个跳转是Tomcat服务器内部完成的。

重定向:

是由浏览器来完成的,具体跳转到哪个资源,由浏览器的请求路径决定。

3.使用例子来描述两者区别:

转发机制(发送一次请求):

假设A有一个项目不会做,找到了B帮忙,但是B也不会做,于是B找到了C帮忙完成了这个项目,但是此时A不知道是C帮忙完成的项目,A只认为是B帮忙完成的,自己欠了B的人情

重定向(发送多次请求):

假设A有一个项目不会做,找到了B帮忙,但是B也不会做,于是B告诉A,C会做这个项目,于是A找到了C帮忙完成了这个项目,最终A在这个过程中,找了两个人,并且知道是C帮了自己的忙。

4.转发和重定向该怎样选择?

如果在上一个Servlet中向request请求域当中绑定了数据,希望在下一个Servlet中将request域中的数据取出,使用转发机制。
.
其他的所有的请求均使用重定向。

注意:转发会存在浏览器的刷新问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值