浅议getRequestDispatcher()与sendRedirect()的区别

getRequestDispatcher()与sendRedirect()的区别

首先我们要知道它们的用法和部分原理:

(1)request.getRequestDispatcher("/路径(这个路径可以是jsp也可以是servlet)") .forward(request, response);
页面跳转:请求转发前后页面共享一个request ; 在服务端运行,可以让路径的页面获得数据,跳转后浏览器地址栏不变,只能在本web应用的页面中跳转。

(2) response.sendRedirect("/路径");
页面跳转:重定向,可以将页面跳转到任何页面,不一定局限于本web应用;跳转后浏览器地址栏变化;在浏览器端运行;前后页面的request不是同一个

理解的例子:简单的登录验证,有login.jsp,check.jsp,success.jsp三个页面,login.jsp获得浏览器页面输入的用户名和密码,check.jsp从login.jsp获得用户名和密码,并判断它们是否为空,判断用户名和密码是否正确,如果正确,就跳转到success.jsp页面。但此时success.jsp要求有欢迎用户名的语句(如欢迎欧阳)。此时区别就来了,如果用的是response.sendRedirect(),success.jsp用getParameter是不能获得用户名的,页面显示的是欢迎null,而此时地址栏的最后是success.jsp,而用request.getRequestDispatcher()是可以获得用户名的,页面显示的是欢迎欧阳,此时地址栏的最后是check.jsp,即跳转后地址栏不变,此方式是可以进行传值的。

猜你喜欢

转载自blog.csdn.net/weixin_43752257/article/details/107199214