When you want to pass the control from one page to another, you can either forward to the other page, or redirect to the new page using the sendRedirect() method of the implicit response object.
Notice the following differences between a forward and a redirect =================================================================
When you forward, the target page is invoked by the JSP container through an internal method call; the new page continues to process the same request and the browser is not aware of the fact that more than one page is involved.
When you redirect, it means that the first page tells the browser to make a new request to the target page. The URL shown in the browser therefore changes to the URL of the new page when you redirect, but stays unchanged when you use forward.
A redirect is slower than a forward because the browser has to make a new request.
Another difference is that request scope objects are no longer available after a redirect because it results in a new request. If you need to pass data to the page you redirect to, you have to use a query string and pass them as request parameters (or save the data as session or application scope objects).
And now how do you decide if you should use forward or redirect?
Look at it like this: Forwarding is always faster, so that's the first choice. But since the URL in the browser refers to the start page even after the forward, you ask yourself what happens if the user reloads the page or just resizes the window, this often reloads the page automatically).
But if your start page is a page that updates some information, such as adding an item to the shopping cart or inserting information in a database, you don't want it to be invoked again on a reload. To show the result of the processing, redirect to a page with a confirmation message, instead of using forward.
Cheers, Su Yeu [ January 16, 2006: Message edited by: Su Yeu ]
A Moment's insight is sometimes worth a Life's experience.