|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--javax.servlet.GenericServlet | +--javax.servlet.http.HttpServlet
Provides an abstract class that you can subclass to create
an HTTP servlet, which receives requests from and
sends responses to a Web site. When you subclass
HttpServlet
, you must override at least
one method, usually one of these:
doGet
, if the servlet supports HTTP GET requests
doPost
, for HTTP POST requests
doPut
, for HTTP PUT requests
doDelete
, for HTTP DELETE requests
init
and destroy
,
which you override as a pair if you need to
manage resources that are held for the life of the servlet
getServletInfo
, which the servlet uses to
provide information about itself
You usually will not override the service
method. service
handles standard HTTP
requests by dispatching them to the handler methods
for each HTTP request type (the do
xxx
methods listed above).
Likewise, you usually will not override the
doOptions
and doTrace
methods.
The service
method supports HTTP 1.1
TRACE and OPTIONS requests by dispatching them to
doTrace
and doOptions
.
Servlets typically run on multithreaded servers, so you must write your servlet to handle concurrent requests and synchronize access to shared resources. Shared resources include in-memory data such as instance or class variables and external objects such as files, database connections, and network connections. See the Java Tutorial on Multithreaded Programming for more information on handling multiple threads in a Java program.
Constructor Summary | |
HttpServlet()
Does nothing, because this is an abstract class. |
Method Summary | |
protected void |
doDelete(HttpServletRequest req,
HttpServletResponse resp)
Receives an HTTP DELETE request from the protected service method and handles the
request. |
protected void |
doGet(HttpServletRequest req,
HttpServletResponse resp)
Receives an HTTP GET request from the protected service method and handles the request. |
protected void |
doOptions(HttpServletRequest req,
HttpServletResponse resp)
Receives an HTTP OPTIONS request from the protected service method and handles the request. |
protected void |
doPost(HttpServletRequest req,
HttpServletResponse resp)
Receives an HTTP POST request from the protected service method and handles the request. |
protected void |
doPut(HttpServletRequest req,
HttpServletResponse resp)
Receives an HTTP PUT request from the protected service method and handles the
request. |
protected void |
doTrace(HttpServletRequest req,
HttpServletResponse resp)
Receives an HTTP TRACE request from the protected service method and handles the request. |
protected long |
getLastModified(HttpServletRequest req)
Returns the time the HttpServletRequest
object was last modified,
in milliseconds since midnight January 1, 1970 GMT. |
protected void |
service(HttpServletRequest req,
HttpServletResponse resp)
Receives standard HTTP requests from the public service method and dispatches
them to the do xxx methods defined in
this class. |
void |
service(ServletRequest req,
ServletResponse res)
Dispatches client requests to the protected service method. |
Methods inherited from class javax.servlet.GenericServlet |
destroy,
getInitParameter,
getInitParameterNames,
getServletConfig,
getServletContext,
getServletInfo,
init,
init,
log,
log |
Methods inherited from class java.lang.Object |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
Constructor Detail |
public HttpServlet()
Method Detail |
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
service
method and handles the request.
The GET method allows a client to read information
from the Web server, passing a query string appended
to an URL to tell the server what information
to return.
Overriding this method to support a GET request also automatically supports an HTTP HEAD request. A HEAD request is a GET request that returns no body in the response, only the request header fields.
If you override this method, you should read data from
the request, set entity headers in the response,
access the writer or output stream object, and finally,
write the response data. When you set headers, be
sure to include content type and encoding. If you use
a PrintWriter
object to return the response,
you must set the content type before you access the
PrintWriter
object.
The servlet engine must write the headers before the response data, because the headers can be flushed at any time after the data is written.
If you can set the Content-Length header (with the
javax.servlet.ServletResponse.#contentType
method),
the servlet
can use a persistent connection to return its response
to the client, improving performance dramatically.
If you cannot set Content-Length, you can sometimes avoid
the performance penalty if the response fits in an internal
buffer.
The GET method should be safe, that is, without any side effects for which users are held responsible. For example, most form queries have no side effects. If a client request is intended to change stored data, the request should use some other HTTP method.
The GET method should also be idempotent, meaning that it can be safely repeated. Sometimes making a method safe also makes it idempotent. For example, repeating queries is both safe and idempotent, but buying a product online or modifying data is neither safe nor idempotent.
If the request is incorrectly formatted, doGet
returns an HTTP BAD_REQUEST message.
req
- an HttpServletRequest
object that
contains the request the client has made
of the servletresp
- an HttpServletResponse
object that
contains the response the servlet sends
to the objectServletResponse.setContentType(java.lang.String)
protected long getLastModified(HttpServletRequest req)
HttpServletRequest
object was last modified,
in milliseconds since midnight January 1, 1970 GMT.
If the time is unknown, this method returns a negative
number.
Servlet engines that support HTTP GET requests
should override getLastModified
to
provide an accurate object modification time. This
makes browser and proxy caches work more effectively,
reducing the load on server and network resources.
req
- the HttpServletRequest
object that is sent to the servletlong
integer specifying
the time the HttpServletRequest
object was last modified, in milliseconds
since midnight, January 1, 1970 GMT, or
-1 if the time is not knownprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
service
method and handles the request.
The HTTP POST method allows the client to send
data of unlimited length to the Web server once
and is useful when posting information such as
credit card numbers.
If you override this method, you should read data from
the HttpServletRequest
object, set headers
for the response (including Content-Type and Content-Encoding),
access a PrintWriter
or
output stream object, and then write any response data
using a ServletOutputStream
object.
If you use a PrintWriter
object to
write response data, set the Content-Type header before
you access the PrintWriter
object.
The servlet engine must write the headers before the
the response data, because the headers can be flushed at
any time after the servlet engine begins to write the body
of the response.
If you use HTTP 1.1 chunked encoding (which means that the response has a Transfer-Encoding header), do not set the Content-Length header. If you do not use chunked encoding, set the content length to allow the servlet to take advantage of the HTTP "connection keep alive" feature, If you cannot set the content length and therefore cannot use "keep alive," you may be able to avoid the performance penalty if the response fits in an internal buffer.
This method does not need to be either safe or idempotent. Operations requested through POST can have side effects for which the user can be held accountable, for example, updating stored data or buying items online.
If the HTTP POST request is incorrectly formatted,
doPost
returns an HTTP BAD_REQUEST message.
req
- an HttpServletRequest
object that
contains the request the client has made
of the servletresp
- an HttpServletResponse
object that
contains the response the servlet sends
to the objectServletOutputStream
,
ServletResponse.setContentType(java.lang.String)
protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
service
method and handles the
request. The PUT operation allows a client to
place a file on the server and is similar to
sending a file by FTP.
If you override this method, your method must leave intact any content headers sent with the request (including Content-Length, Content-Type, Content-Transfer-Encoding, Content-Encoding, Content-Base, Content-Language, Content-Location, Content-MD5, and Content-Range). If your method cannot handle a content header, it must issue an error message (HTTP 501 - Not Implemented) and discard the request. For more information on HTTP 1.1, see RFC 2068 .
This method does not need to be either safe or idempotent.
Operations that doPut
performs can have side
effects for which the user can be held accountable. If you
override this method, you may want to save a copy of the
affected URL in temporary storage.
If the HTTP PUT request is incorrectly formatted,
doPut
returns an HTTP BAD_REQUEST message.
req
- the HttpServletRequest
object that
contains the request the client made of
the servletresp
- the HttpServletResponse
object that
contains the response the servlet returns
to the clientprotected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
service
method and handles the
request. The DELETE
operation allows a client to remove a document
or Web page from the server.
This method does not need to be either safe or idempotent. Operations requested through DELETE can have side effects for which users can be held accountable. If you override this method, you may want to save a copy of the affected page in temporary storage.
If the HTTP DELETE request is incorrectly formatted,
doDelete
returns an HTTP BAD_REQUEST
message.
req
- the HttpServletRequest
object that
contains the request the client made of
the servletresp
- the HttpServletResponse
object that
contains the response the servlet returns
to the clientprotected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException
service method and handles the request.
The OPTIONS request determines which HTTP methods
the server supports and
returns an appropriate header. For example, if a servlet
overrides doGet
, this method returns the
following header:
Allow: GET, HEAD, TRACE, OPTIONS
You do not need to override this method unless your
servlet implements new HTTP methods, beyond those
implemented by HTTP 1.1.
- Parameters:
req
- the HttpServletRequest
object that
contains the request the client made of
the servletresp
- the HttpServletResponse
object that
contains the response the servlet returns
to the client- Throws:
- java.io.IOException - if an input or output error occurs
while the servlet is handling the
OPTIONS request
- ServletException - if the request for the
OPTIONS cannot be handled
doTrace
protected void doTrace(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException,
java.io.IOException
- Receives an HTTP TRACE request from the protected
service
method and handles the request.
HTTP TRACE returns the headers sent with the TRACE
request to the client, so that they can be used in
debugging. You do not usually need to override this method.
- Parameters:
req
- the HttpServletRequest
object that
contains the request the client made of
the servletresp
- the HttpServletResponse
object that
contains the response the servlet returns
to the client- Throws:
- java.io.IOException - if an input or output error occurs
while the servlet is handling the
TRACE request
- ServletException - if the request for the
TRACE cannot be handled
service
protected void service(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException,
java.io.IOException
- Receives standard HTTP requests from the public
service
method and dispatches
them to the do
xxx methods defined in
this class. This method is an HTTP-specific version of the
javax.servlet.Servlet.service
method. You will probably
not need to override this method.
- Parameters:
req
- the HttpServletRequest
object that
contains the request the client made of
the servletresp
- the HttpServletResponse
object that
contains the response the servlet returns
to the client- Throws:
- java.io.IOException - if an input or output error occurs
while the servlet is handling the
TRACE request
- ServletException - if the request for the
TRACE cannot be handled
- See Also:
Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
service
public void service(ServletRequest req,
ServletResponse res)
throws ServletException,
java.io.IOException
- Dispatches client requests to the protected
service
method. You will usually not
override this method.
- Parameters:
req
- the HttpServletRequest
object that
contains the request the client made of
the servletresp
- the HttpServletResponse
object that
contains the response the servlet returns
to the client- Throws:
- java.io.IOException - if an input or output error occurs
while the servlet is handling the
TRACE request
- ServletException - if the request for the
TRACE cannot be handled
- Overrides:
- service in class GenericServlet
- See Also:
Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
Overview
Package
Class
Use
Tree
Deprecated
Index
Help
PREV CLASS
NEXT CLASS
FRAMES
NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD
DETAIL: FIELD | CONSTR | METHOD