原文连接:http://www.yiidian.com/servlet/servlet-how-work.htmlhtml
接下来咱们有必要了解下Servlet的工做原理,这样才能更好地理解Servlet。本文咱们将以以前开发过的Servlet程序来说解Servlet的内部细节。java
Web容器(如Tomcat)判断当前请求是否第一次请求Servlet程序 。web
若是是第一次,则Web容器执行如下任务:服务器
加载Servlet类。yii
实例化Servlet类。学习
调用init方法并传入ServletConfig对象 若是不第一次执行,则:网站
调用service方法,并传入request和response对象 Web容器在须要删除Servlet时(例如,在中止服务器或从新部署项目时)将调用destroy方法。线程
Web容器负责处理请求。让咱们看看它如何处理请求。rest
public的service方法将ServletRequest对象转换为HttpServletRequest类型,而ServletResponse对象转换为HttpServletResponse类型。而后,调用传递这些对象的服务方法。让咱们看一下内部代码:code
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { HttpServletRequest request; HttpServletResponse response; try { request = (HttpServletRequest)req; response = (HttpServletResponse)res; } catch(ClassCastException e) { throw new ServletException("non-HTTP request or response"); } service(request, response); }
protected的service方法判断请求的类型,若是请求类型为GET,则调用doGet方法,若是请求类型为POST,则调用doPost方法,依此类推。让咱们看一下内部代码:
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String method = req.getMethod(); if(method.equals("GET")) { long lastModified = getLastModified(req); if(lastModified == -1L) { doGet(req, resp); } .... //rest of the code } }
欢迎关注个人公众号::一点教程。得到独家整理的学习资源和平常干货推送。 若是您对个人系列教程感兴趣,也能够关注个人网站:yiidian.com