What is the difference
between doGet() and doPost()?
#
|
doGet()
|
doPost()
|
1
|
In doGet() the parameters are appended to the URL and sent
along with header information.
|
In doPost(), on the other hand will (typically) send the
information through a socket back to the webserver and it won't show up in
the URL bar.
|
2
|
The amount of information you can send back using a GET is
restricted as URLs can only be 1024 characters.
|
You can send much more information to the server this way -
and it's not restricted to textual data either. It is possible to send files
and even binary data such as serialized Java objects!
|
3
|
doGet() is a request for information; it does not (or should
not) change anything on the server. (doGet() should be idempotent)
|
doPost() provides information (such as placing an order for
merchandise) that the server is expected to remember
|
4
|
Parameters are not encrypted
|
Parameters are encrypted
|
5
|
doGet() is faster if we set the response content length since
the same connection is used. Thus increasing the performance
|
doPost() is generally used to update or post some information
to the server.doPost is slower compared to doGet since doPost does not write
the content length
|
6
|
doGet() should be idempotent. i.e. doget should be able to be
repeated safely many times
|
This method does not need to be idempotent. Operations
requested through POST can have side effects for which the user can be held
accountable.
|
7
|
doGet() should be safe without any side effects for which user
is held responsible
|
This method does not need to be either safe
|
8
|
It allows bookmarks.
|
It disallows bookmarks.
|
When to use doGet() and when doPost()?
Always prefer to use GET (As because GET is
faster than POST), except mentioned in the following reason:
If data is sensitive
Data is greater than 1024 characters
If your application don't need bookmarks.
.How do I
support both GET and POST from the same Servlet?
The easy way is, just support POST, then have
your doGet method call your doPost method:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
doPost(request, response);
}