servlet-4(请求转发与重定向)

请求转发与重定向

  通过HttpServletRequest 获取到的RequestDispatcher 对象的forward()方法,可以完成请求转发功能。而通过HttpServletResponse 的sendRedirect()方法,可以完成重定向功能。

请求转发与重定向均是指的请求的跳转方式。用户提交请求需要访问服务端的资源1,
而资源1 又需要访问资源2,那么由资源1 向资源2 的跳转,具有两种方式:请求转发与重
定向。

(1)请求转发

  请求转发是指资源1在服务器内部直接跳转到资源2,所以请求转发也称为服务期内跳转。整个过程中浏览器只发出一次请求,服务器只发出一次响应,所以无论是资源1还是资源2,整个过程中只存在一次请求,即用户所提交的请求。所以无论是用户1还是用户2都可以获得用户提交请求时所携带的数据

(2)重定向

  重定向是指,资源1需要访问资源2,但并未在服务器内直接访问,而是向浏览器自动发送一个响应,浏览器在自动提交一个请求访问资源2。所以对于资源2的访问,是先跳出了服务器,跳转到了客户端浏览器,再跳转回服务器。所以重定向又称为服务器外跳转。

  整个过程浏览器提交了两次请求,服务器端发送了两次响应,但是在用户看来只提交了一次请求且只收到了一次响应 。但实际上产生了两次请求,那么资源2中是无法获取到用户提交请求的数据的。它只能获取第二次请求中所携带的数据。

 

注1:因为重定向时无法拿到第一次提交的参数,我们可以在重定向的请求地址后携带参数。 携带的参数形式为 :    请求路径?参数名=值&参数名=值&。。。

注2:重定向可以跳转到别的应用,而请求转发只能在当前应用内跳转

请求转发与重定向的选择
(1)若需要跳转到其它应用,则使用重定向。
(2)若是处理表单数据的Servlet 要跳转到其它Servlet,则需要选择重定向。为了防止表单
重复提交。
(3)若对某一请求进行处理的Servlet 的执行需要消耗大量的服务器资源(CPU、内存),此
时这个Servlet 执行完毕后,也需要重定向。
(4)其它情况,一般使用请求转发。

 

转载于:https://www.cnblogs.com/secondcao/p/7880246.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值