当前位置:   article > 正文

Request.getRequestDispatcher(url).forward(request,response)与response.sendRedirect(url)浅理解_request.getrequestdispatcher("").forward(request,

request.getrequestdispatcher("").forward(request, response);

request求求转发方法与response重定向方法是我们在web中经常用的两种转发技术。

不同点1:response.sendRedirect(url)属于静态跳转,重定向,特点是不会带服务器层的请求到转发的页面,因为没有request.getRequestDispatcher(url).forword(request,response)方法(可以这样理解)。Request.getRequestDispatcher(url).forward(request,response)是请求转发,会将服务器中要传输的请求数据,在request.setAttribute("name", 参数)放在request中,并在请求转发时候的forword(request,response)时候,把setAttribute方法中设置的参数传递到请求页面,属于动态的(服务器内部跳转)。

  当然response.sendRedirect我们也可以用路径带参数进行传递参数值,这种不是response的特殊方法,只要是路径都可以:

response.sendRedirect(request.getContextPath()+"/nextServlet?action=login&username=123&password=123");

不同点2:跳转路径显示不同,response.sendRedirect(url)后,跳转地址是要跳转地址的页面地址,而request.getRequestDispatcher(url).forword(request,response)地址不会改变,还是服务器地址。

不同点3:url路径写法差异,在response.sendRedirect(url)时候,我们这样写response.sendRedirect("success.jsp"),这样跳转地址就是正常的

http://localhost:8080/项目名/successs.jsp。

或者是使用request.getContextPath()+"/success.jsp",用request.getContextPath()获得上下文路径与跳转页面拼接也行。

response.sendRedirect(request.getContextPath()+"/success.jsp");

如果是这样写response.sendRedirect("/success.jsp"),那跳转路径就是:

http://localhost:8080/successs.jsp。

而Request.getRequestDispatcher("/success.jsp").forward(request,response)则是会能够跳转到项目下的jsp中

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/431204
推荐阅读
相关标签
  

闽ICP备14008679号