一:转发与重定向概念
重定向:首先服务器受到浏览器客户端请求之后,服务器发送新的链接到客户端浏览器,浏览器接收到新的链接之后又重新请求收到的链接地址,在整个过程中完成之后在客户端浏览器看来是发生了一次跳转,其实是客户端浏览器请求了两次而已,所以在浏览器的地址栏里网络地址自然就会改变成新的连接
转发:服务器接收到客户端的请求之后,服务器把控制权交到另一个JSP页面手里,新的JSP页面接收到请求之后根据情况是继续转交控制权或者显示页面由自己决定,到最后显示页面的整个过程就是一个页面跳转过程,在这个过程中,服务器可以把请求的数据在经过的页面进行传递,而不会担心数据的丢失
重定向:response.sendRedirect("success.jsp");
转发:request.getRequestDispatcher("success.jsp").forward(request,response);
二、图说明
重定向:
转发
三、转发与重定向对比
1.转发在服务器端完成的;重定向是在客户端完成的
2.转发的速度快;重定向速度慢
3.转发的是同一次请求;重定向是两次不同请求
4.转发不会执行转发后的代码;重定向会执行重定向之后的代码
5.转发地址栏没有变化;重定向地址栏有变化
6.转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成
7.转发中的/代表的是http://127.0.0.1/project;如this.getServletContext().getRequestDispatcher("/TestJsp.jsp").forward(req,resp),并且要以/开头;
重定向中的/代表的是http://127.0.0.1/;如<% response.sendRedirect("/TestJsp.jsp");%>
<form action="/TestJsp.jsp">
<a href="/TestJsp.jsp"> test </a>