How Servlet works?
It is important to learn how
servlet works for understanding the servlet well. Here, we are going to get the
internal detail about the first servlet program.
The server checks if the
servlet is requested for the first time.
If yes, web container does the following tasks:
- loads
the servlet class.
- instantiates
the servlet class.
- calls
the init method passing the ServletConfig object
else
- calls
the service method passing request and response objects
The web container calls the
destroy method when it needs to remove the servlet such as at time of stopping
server or undeploying the project.
How web
container handles the servlet request?
The web container is
responsible to handle the request. Let's see how it handles the request.
- maps
the request with the servlet in the web.xml file.
- creates
request and response objects for this request
- calls
the service method on the thread
- The
public service method internally calls the protected service method
- The
protected service method calls the doGet method depending on the type of
request.
- The
doGet method generates the response and it is passed to the client.
- After
sending the response, the web container deletes the request and response
objects. The thread is contained in the thread pool or deleted depends on
the server implementation.
What is
written inside the public service method?
The public service method
converts the ServletRequest object into the HttpServletRequest type and
ServletResponse object into the HttpServletResponse type. Then, calls the
service method passing these objects. Let's see the internal code:
1. public void service(ServletRequest req, ServletResponse res)
2. throws ServletException, IOException
3. {
4. HttpServletRequest request;
5. HttpServletResponse response;
6. try
7. {
8. request = (HttpServletRequest)req;
9. response = (HttpServletResponse)res;
10. }
11. catch(ClassCastException e)
12. {
13. throw new ServletException("non-HTTP request or response");
14. }
15. service(request, response);
16. }
What is
written inside the protected service method?
The protected service method
checks the type of request, if request type is get, it calls doGet method, if
request type is post, it calls doPost method, so on. Let's see the internal
code:
1. protected void service(HttpServletRequest req, HttpServletResponse resp)
2. throws ServletException, IOException
3. {
4. String method = req.getMethod();
5. if(method.equals("GET"))
6. {
7. long lastModified = getLastModified(req);
8. if(lastModified == -1L)
9. {
10. doGet(req, resp);
11. }
12. ....
13. //rest of the code
14. }
15. }
great
ReplyDelete