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。