赞
踩
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中
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。