servlet如何选择request.getRequestDispatcher和response.sendRedirect的使用

request.getRequestDispatcher和response.sendRedirect都是用于页面的跳转,不同的是

request.getRequestDispatche是页面转发

response.sendRedirect是页面重定向

这里就需说明一下二者的区别:

1、请求的次数的不同,重定向总共请求了两次服务器;跳转则是用户请求一次可能经过N个JSP页面由返回到用户浏览器中,是一次请求多次处理的过程;所以sendRedirect是服务器端跳转,getRequestDispatche是浏览器端跳转

2、跳转过程中链接的变化,重定向在跳转中请求了两次服务器并且是两次不同的链接地址,在浏览器的地址栏可以看到两次是有变化的;转发在跳转过程中浏览器请求了一次服务器,服务器经过了n个JSP页面并没有改变请求的链接地址,因为用户只请求了一次,所以在整个跳转过程中链接地址是没有改变的,在浏览器的地址栏就可以看到。当你再次刷新页面时,页面又会回到最原始的状态

3、传递的数据不同,response.sendRedirect(“http:///deuhduehdue?key=value”)只能传递简单的字符串,下个页面接收到的数据类型也是String类型。而使用request.getRequestDispatche跳转则可以使用request.setAttribute("key", "value");传递数据,此方法可以传递对象,数组等。

那这两种跳转方式改怎么选择呢

1、如果request.setAttribute("key", "value")希望下个页面可以接收到数据,用request.getRequestDispatche

2、如果session.setAttribute("key", "value")希望下个页面可以接收到数据,两种方式都可以,但是推荐request.getRequestDispatche,因为它速度更快(一般情况都选择request.getRequestDispatche

3、如果希望跳转到本网站之外的其他网站,只能使用response.sendRedirect。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值