Home 转发和重定向的区别
Post
Cancel

转发和重定向的区别

调用方式不一样

转发是

  • ServletContext.getRequestDispatcher(url).forward(req,rops);,url只能使用绝对路径,因为ServletRequest具有相对路径的概念;而ServletContext对象无此概念。当使用绝对路径时,/代表的是Web项目,代表http://localhost:8080/项目名/
  • request.getRequestDispatcher(url).forward(req,rops);,url可以使用相对路径。
  • <jsp:forward page="welcome.jsp"></jsp:forward>

重定向是
response.sendRedirect(url);

浏览器地址栏是否发生变化

转发不发生变化,重定向会发生变化。

参数的传递方式不一样

重定向response.sendRedirect(url)跳转到指定的URL地址,产生一个新的Request,所以要传递参数只有在URL后加参数,如:url?id=1

转发request.getRequestDispatcher(url).forward(request, response)是直接将请求转发到指定URL,所以该请求能够直接获得上一个请求的数据,也就是说采用请求转发,Request对象始终存在,不会重新创建。

行为对象不一样

转发是服务器的行为,重定向是客户端浏览器的行为。

This post is licensed under CC BY 4.0 by the author.