Difference between SendRedirect and forward is one of classical interview
questions asked during java web developer interview. This is not just applicable
for servlet but also for JSP in which we can use forward action or call
sendRedirect() method from scriptlet. Before examining difference on forward and
SendRedirect let’s see what send Redirect method and forward method does.
SendRedirect
():
This method is declared in
HttpServletResponse Interface.
Signature: void sendRedirect(String url)
Read more: http://javarevisited.blogspot.com/2011/09/sendredirect-forward-jsp-servlet.html#ixzz2xmpb4zvh
This method is used to redirect client request to some other
location for further processing ,the new location is
available on different server or different context.our web container handle this
and transfer the request using browser ,and this request
is visible in browser as a new request. Some time this is
also called as client side redirect.
Forward():
This method is declared
in RequestDispatcher Interface.
Signature: forward(ServletRequest request,
ServletResponse response)
This method is used to pass the request to another resource for further
processing within the same server, another resource could
be any servlet, jsp page any kind of file.This process is taken care by web
container when we call forward method request is sent to another
resource without the client being
informed, which resource will handle the request it has been
mention on requestDispatcher object which we can get by two ways either using
ServletContext or Request. This is also called server side redirect.
RequestDispatcher rd =
request.getRequestDispatcher("pathToResource");
rd.forward(request,
response);
Or
RequestDispatcher rd =
servletContext.getRequestDispatcher("/pathToResource");
rd.forward(request, response);
Difference between SendRedirect
and Forward
Now let’s see some difference between these two method of servlet API in
tabular format.
Forward() |
SendRediret() |
When we use forward method request is transfer to other resource
within the same server for further processing. |
In case of sendRedirect request is transfer to another resource to
different domain or different server for futher processing.
|
In case of forward Web container handle all process internally
and client or browser is not involved.
|
When you use SendRedirect container transfers the request
to client or browser so url given inside
the sendRedirect method is visible as a new
request to the client.
|
When forward is called
on requestdispatherobject we pass request and
response object so our old request object is present on new resource which
is going to process our request
|
In case of SendRedirect call old request and response object is lost
because it’s treated as new request by the browser. |
Visually we are not able to see the forwarded address, its is
transparent |
In address bar we are able to see the new redirected address it’s not
transparent.
|
Using forward () method is faster then send redirect. |
SendRedirect is slower because one extra round trip is required
beasue completely new request is created and old request object is
lost.Two browser request requird.
|
When we redirect using forward and we want to use same data in new
resource we can use request.setAttribute () as we have request object
available. |
But in sendRedirect if we want to use we have to store the data in
session or pass along with the URL. |
Example of forward and
SendRedirect in JSP Servlet:
Any kind of online payment when we use merchant site will
redirect us to net banking site which is completely new request it
process our request and again redirect to merchant site?
In Banking Application when we do login normally we use forward method. In
case of online banking we are asked for username and password if it’s
a correct some another servlet or resource will handle the request other wise
request has been forwarded to error page.
Which one is good?
Its depends upon the scenario that which method is more useful.
If you want control is transfer to new server or context and it is treated
as completely new task then we go for Send Redirect.
Normally forward should be used if the operation can be safely repeated
upon a browser reload of the web page will not affect the result.
SendRedirect and forward method are still very useful while programming or
working on any web application project using servlet jsp.
This is still a popular interview questions so don’t forget to
revise forward and sendRedirect before appearing for
any job interview.
Read more: http://javarevisited.blogspot.com/2011/09/sendredirect-forward-jsp-servlet.html#ixzz2xmpgi4Ie
see also:
http://javarevisited.blogspot.com/2011/09/sendredirect-forward-jsp-servlet.html
difference between forward and sendredirect,布布扣,bubuko.com
difference between forward and sendredirect
原文:http://www.cnblogs.com/malaikuangren/p/3642360.html