请求转发代码:request.getRequestDispatcher(URL地址).forward(request, response);
重定向代码:response.sendRedirect(URL地址);
重定向就好比:有个绰号叫“浏览器”的人写信找张三借钱,张三回信说没有钱,
让“浏览器”去找李四借,并将李四现在的通信地址告诉给了“浏览器”。于是,“浏览器”
又按张三提供通信地址给李四写信借钱,李四收到信后就把钱汇给了“浏览器”。可见,“浏览器”
一共发出了两封信和收到了两次回复, “浏览器”也知道他借到的钱出自李四之手。
请求转发就好比:有个绰号叫“浏览器”的人写信找张三借钱,张三没有钱,于是张三找李四
借了一些钱,甚至还可以加上自己的一些钱,然后再将这些钱汇给了“浏览器”。
可见,“浏览器”只发 出了一封信和收到了一次回复,他只知道从张三那里借到了钱,
并不知道有一部分钱出自李四之手。
请求转发和重定向的区别:
本质区别:
请求转发:只请求一次
重定向:两次请求
1.请求转发:地址栏还是请求的地址栏
重定向:地址栏不是第一次请求的地址栏,而是最后一次请求的地址栏
2.请求转发:在最终的servlet中,request对象和中转的request对象是同一个request对象
重定向:在最终的servlet中,request对象和中转的request对象不是同一个request对象
3.请求转发:/代表当前web应用的根目录
重定向:/代表当前web站点的根目录
4.请求转发:只能转发当前web应用下的资源
重定向:可以重定向到外部资源