面试题总结:servlet中 请求转发forward 和 重定向redirect的区别

1. 什么是请求转发和重定向?

请求转发:  xxServlet收到请求,然后直接转发给yyServlet,然后yyServlet返回给客户端。整个过程中,客户端发出一个请求,收到一个响应

 

重定向:xxServlet收到请求,然后发出一个响应给客户端,客户端立即又发送一个请求访问xxServlet中给的URL,即yyServlet的路径,然后yyServlet给客户端一个响应。整个过程中,客户端发出两个请求,收到两个响应

 

 

2. 请求转发和请求重定向的实现方法

请求转发:    利用RequestDispather接口中的forward方法实现请求转发。

请求重定向:利用HttpServletResponse的sendRedirect方法实现请求重定向。

 

3.请求的转发和重定向的区别

本质区别:请求的转发只发出了一次请求,而重定向则发出了两次请求。在浏览器的开发工具中可以看到请求的次数:

具体的区别体现在:

  1.请求的转发:地址栏是初次发出请求的地址。

     请求的重定向:地址栏不是初次发出请求的地址,为最后响应的地址。

  2.请求转发:在最终的Servlet中,request和中转的那个request是同一个对象。

     请求的重定向:在最终的Servlet中,request和中转的那个request不是同一个对象。

  3.请求转发:只能转发给当前web应用的资源。

    请求的重定向:可以重定向到任何资源。

  4.请求的转发:/代表的是当前web应用的根目录。

    请求的重定向:/代表的是当前web站点的根目录。

序号问题重定向redirect请求转发forward
1第二次请求谁请求的?浏览器服务器
2浏览器发送了几次请求?2次以上1次
3 servlet可以共享request吗?不可以可以
4地址栏是否发生改变?不是
5浏览器地址栏显示的是哪一次访问地址?最后一次第一次
6可以跳转到什么资源?任意资源项目内部
7第二次的请求路径是?绝对路径内部路径

 

 

参考:

https://blog.csdn.net/u010452388/article/details/80398929 此篇博客总结的形象、易理解;

https://www.cnblogs.com/naihuangbao/p/9795099.html

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值