Reproduced from: http://www.cnblogs.com/hellofei/archive/2010/02/02/1662070.html
The difference between JSP forwarding and redirection
Http://blog.csdn.net/CYHJRX/archive/2009/02/26/3938252.aspx
For a long time did not look, and the foundation just to forget. Have a good look again today. Oh, oh ... I know the new ah ...
1.requestdispatcher.forward ()-Forwarding
is on the server side, when using forward (), the Servlet engine passes HTTP requests from the current servlet or JSP to another servlet,jsp or normal HTML file, or your form commits to a.jsp, The forward () redirect to b.jsp is used in a.jsp, where all the information submitted by form is available in b.jsp and the parameters are automatically passed.
However, forward () cannot be redirected to a JSP file with a frame, and can redirect to an HTML file with a frame, while forward () cannot be passed back with parameters, such as Servlet?name=frank, which can be passed within the program Response.setattribute ("name", name) is passed to the next page.
The browser address bar URL does not change after forwarding.
Example: Redirecting in the servlet
public void DoPost (httpservletrequest request,httpservletresponse response)
Throws Servletexception,ioexception
{
Response.setcontenttype ("text/html; charset=gb2312 ");
ServletContext sc = Getservletcontext ();
RequestDispatcher rd = null;
RD = Sc.getrequestdispatcher ("/index.jsp"); Directed pages
Rd.forward (request, response);
}
Typically used in a servlet and not used in a JSP.
2.response.sendredirect ()-redirect
is working on the user's browser side, Sendredirect () can be passed with parameters, such as Servlet?name=frank to the next page, and it can be redirected to different hosts, Sendredirect () can redirect the JSP file with frame.
The URL of the redirected page appears on the browser's address bar after redirection
Example: Redirecting in the servlet
public void DoPost (httpservletrequest request,httpservletresponse response)
Throws Servletexception,ioexception
{
Response.setcontenttype ("text/html; charset=gb2312 ");
Response.sendredirect ("/index.jsp");
}
Because response is an implied object in JSP pages, you can use Response.sendredirect () directly in JSP pages to achieve relocation.
Because response is an implied object in JSP pages, you can use Response.sendredirect () directly in JSP pages to achieve relocation.
Attention:
(1). You cannot have HTML output before using Response.sendredirect.
This is not absolute, and the inability to have HTML output actually means that HTML cannot be sent to the browser. In fact, now the SERVER has cache mechanism, generally in 8K (I mean JSP SERVER), which means that unless you close the cache, or you use the Out.flush () force refresh, then before using Sendredirect, there are a small number of The HTML output is also allowed.
(2). After Response.sendredirect, should be followed by a return;
We already know that Response.sendredirect is a browser to do the steering, so only after the page processing is complete, there will be actual action. Now that you've got to turn, then what's the point of the output? And it is possible that the subsequent output will cause the steering failure.
Comparison:
(1). Request Dispatcher.forward () is the control in the container of the steering, in the client browser address bar will not show the direction of the address;
(2). Response.sendredirect () is a complete jump, the browser will get the address of the jump, and resend the request link. In this way, you can see the link address after the jump from the address bar of the browser.
The former is more efficient, when the former can meet the needs, try to use the Requestdispatcher.forward () method.
Note: In some cases, for example, you need to jump to a resource on a different server, you must use the Httpservletresponse.sendrequest () method.
3.<jsp:forward page= ""/>
Its underlying part is implemented by RequestDispatcher, so it carries the imprint of the Requestdispatcher.forward () method.
Special attention should be paid to the fact that if there are many outputs before <jsp:forward>, the previous output is full and the buffer is automatically output to the client, then the statement will not work.
Also note: It can not change the browser address, the refresh will result in duplicate submission
4. Modify the HTTP header's Location property to redirect
You can redirect the page by setting the address bar directly.
The JSP file code is as follows:
<%
Response.setstatus (httpservletresponse.sc_moved_permanently);
String NEWLOCN = "/newpath/jsa.jsp";
Response.setheader ("Location", NEWLOCN);
%>
5.JSP implementation of a page after a few seconds, automatically redirect to another page
In the HTML file, the following code:
<meta http-equiv= "Refresh" content= "300; Url=target.jsp ">
What it means: the page that you are browsing after 5 minutes will automatically change to target.html page. The delay time, in seconds, for the refresh of 300 in the code. Targer.html for the target page you want to turn to, if this page is the automatic refresh this page.
From the above, you can use SetHeader to achieve a page after a few seconds, automatically redirect to another page.
Key code:
String content=staytime+ "; Url= "+url;
Response.setheader ("REFRESH", content);