1.加载Servlet类
类加载器负责加载servlet类。 当Web容器接收到servlet的第一个请求时,将加载servlet类。
2.创建Servlet实例
Web容器在加载servlet类之后创建一个servlet的实例。servlet实例在servlet生命周期中只创建一次。
3.调用init方法
Web容器在创建servlet实例后调用init
方法一次。 init
方法用于初始化servlet。 它是javax.servlet.Servlet
接口的生命周期方法。
4.调用service方法
每当接收到servlet的请求时,Web容器都会调用service
方法。如果servlet未初始化,则遵循上述前三个步骤,然后调用service
方法。 如果servlet被初始化,它调用service
方法。 请注意,servlet仅初始化一次。
5.调用destroy方法
从服务中删除servlet实例之前,Web容器调用destroy
方法。它使servlet有机会清理所有资源,例如内存,线程等。
服务器检查servlet是否为第一次被请求?如果是第一次被请求,则 - •加载servlet类。•实例化servlet类。•调用init方法传递ServletConfig对象如果不是第一次被请求,则 - •调用service方法传递请求和响应对象Web容器在需要删除servlet时调用destroy方法,例如:在停止服务器或取消部署项目时。Web容器如何处理servlet请求?Web容器负责处理请求。下面来看看看它如何处理请求。•将请求与web.xml文件中的servlet进行映射。•为请求创建请求和响应对象•调用线程上的service方法•公共service方法内部调用受保护的service方法•受保护的service方法根据请求的类型调用doGet方法。•doGet方法生成响应,并将其传递给客户端。•发送响应后,Web容器将删除请求和响应对象。线程包含在线程池中或删除取决于服务器实现
公共service
方法将ServletRequest
对象转换为HttpServletRequest
类型和ServletResponse
对象转为HttpServletResponse
类型。然后调用传递这些对象的service
方法。
受保护的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 } }
打war包
jar -cvf projectname.war *
这里,-c
用于创建文件-v
生成详细输出,-f
用于指定war
文件名。
*
(星号)符号表示此目录的所有文件(包括子目录)。