forward和sendRedirect的区别
forward:
1、服务器端在起作用,只是发送一次request请求
2、是servlet容器将http请求从当前servlet或者jsp传递到下一个servlet或者jsp。
3、重定向后地址栏中的URL不会发生变化。
sendRedirect:
1、在客户端作的重定向处理(该方法通过修改HTTP协议的HEADER部分,对浏览器下达重定向指令的,让浏览器对在location中指定的URL提出请求,使浏览器显示重定向网页的内容。),发送两次request请求
2、当前的servlet或者jsp请求内容不会被传递
3、地址栏中显示重定向后的url。
sendRedirect能够处理相对URL,自动把它们转换成绝对URL,如果地址是相对的,没有一个‘/’,那么Web container就认为它是相对于当前的请求URI的。
比如:如果为response.sendRedirect("login.jsp"),则会从当前servlet 的URL路径下找login.jsp: http://10.1.18.8:8081/dms/servlet/Servlet 重定向的URL: http://10.1.18.8:8081/dms/servlet/login.jsp,
如果为response.sendRedirect("/login.jsp")则会从当前应用径下查找url:http://10.1.18.8:8081/login.jsp。
而forward不能这样处理相对路径。
http header请求内容:
forward:
sendRedirect: