在Java EE项目的servlet中,Dispatcher.forward函数和response.sendRedirect函数使用较频繁,本文总结一下二者的区别,如有错漏还请指正:
Dispacther.forward:
1. 在web服务器工作
2. 无法通过在URL中传递参数,但是在a.jsp页面的form中填写的数据如果调用forward方法可以自动传递到b.jsp页面
3. 重定向后浏览器地址不变(在服务器内部执行,浏览器地址不变)
4. 重定向不可以跳转到新的主机
5. forward方法是容器中控制权的转让
6. 能满足需求的前提下尽量使用forword方法,不但执行更高效还可以隐藏跳转的链接
response.sendRedirect:
1. 在用户的浏览器工作
2. 可以在URL中带参数传递: servletname?id=2&name=tom
3. 重定向后浏览器地址改变 (在浏览器执行,浏览器地址改变)
4. 重定向可以跳转到新的主机
5. sendRedirect方法是完全跳转
6. 需要跳转到其他主机时必须使用sendRedirect方法