您的位置:首页 > 产品设计 > UI/UE

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

2016-10-31 11:34 411 查看
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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐