一、edirect和forward的定义:
1.redirect:服务端发送给客户端一个重定向的临时响应头,这个响应头包含重定向之后的URL,客户端用新的URL重新向服务器发送一个请求。
2.forward:服务器程序内部请求转向,这个特性允许前一个程序用于处理请求,而后一个程序用来返回响应。
定义说明转发操作可以保持request内的parameter,attribute这些值都可以保留,而重定向操作却会丢弃:第一:转发实在服务端完成,并没有经过客户端;第二:转发整个操作完成后才生成响应;第三:重定向是服务端向客户端发送指定的URL;第四:重定向实在客户端完成的。
二、sendRedirect
1.代码分析:
public void sendRedirect(String location)
throws IOException {
if (isCommitted())
throw new IllegalStateException
(sm.getString("coyoteResponse.sendRedirect.ise"));
// Ignore any call from an included servlet
if (included)
return;
// Clear any data content that has been buffered
resetBuffer();