servlet的生命周期结构有哪些

  

servlet的生命周期结构有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1。Servlet生命周期:Servlet加载——→实例化——→服务——→销毁。

2. init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init ()。
3.服务():它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的服务()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在服务()方法。默认的服务功能是调用与HTTP请求的方法相应的做的功能。
摧毁():4.,仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时,负责释放占用的资源。一个Servlet在运行服务()方法时可能会产生其他的线程,因此需要确认在调用摧毁()方法时,这些线程已经终止或完成。

Tomcat与Servlet是如何工作的:

 Servlet的生命周期结构有哪些

<强>步骤:

1。Web客户端向Servlet容器(Tomcat)发出Http请求
2。Servlet容器接收Web客户机的请求
3。Servlet容器创建一个请求对象,将Web客户端请求的信息封装到这个对象中。
4. Servlet容器创建一个响应对象
5。Servlet容器调用HttpServlet对象的服务方法,把请求对象与响应对象作为参数传给Servlet对象。
6. Servlet调用请求对象的有关方法,获取Http请求信息。
7. HttpServlet调用响应对象的有关方法,生成响应数据。
8。Servlet容器把HttpServlet的响应结果传给Web客户端只

<强> Servlet工作原理:

1,首先简单解释一下Servlet接收和响应客户请求的过程,首先客户发送一个请求,Servlet是调用服务()方法对请求进行响应的,通过源代码可见,服务()方法中对请求的方式进行了匹配,选择调用doGet, doPost等这些方法,然后再进入对应的方法中调用逻辑层的方法,实现对客户的响应。在Servlet接口和GenericServlet中是没有doGet (), doPost()等等这些方法的,HttpServlet中定义了这些方法,但是都是返回错误信息,所以,我们每次定义一个Servlet的时候,都必须实现doGet或doPost等这些方法。
2,每一个自定义的Servlet都必须实现Servlet的接口,Servlet接口中定义了五个方法,其中比较重要的三个方法涉及到Servlet的生命周期,分别是上文提到的init(),服务(),摧毁()方法.GenericServlet是一个通用的,不特定于任何协议的Servlet,它实现了Servlet接口。而HttpServlet继承于GenericServlet,因此HttpServlet也实现了Servlet接口,所以我们定义Servlet的时候只需要继承HttpServlet即可。
3, Servlet接口和GenericServlet是不特定于任何协议的,而HttpServlet是特定于HTTP协议的类,所以HttpServlet中实现了服务()方法,并将请求ServletRequest, ServletResponse强转为HttpRequest和HttpResponse。

<>强创建Servlet对象的时机:

1. Servlet容器启动时:读取Web . xml配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,同时将ServletConfig对象作为参数来调用Servlet对象的初始化方法。
2。在Servlet容器启动后:客户首次向Servlet发出请求,Servlet容器会判断内存中是否存在指定的Servlet对象,如果没有则创建它,然后根据客户的请求创建HttpRequest, HttpResponse对象,从而调用Servlet 对象的服务方法。
3. Servlet  Servlet容器在启动时自动创建Servlet,这是由在Web . xml文件中为Servlet设置的& lt; load-on-startup>属性决定的。从中我们也能看到同一个类型的Servlet对象在Servlet容器中以单例的形式存在。

& lt; servlet>   & lt;才能servlet-name> Init</servlet-name>   & lt;才能servlet-class> org.xl.servlet.InitServlet</servlet-class>   & lt;才能load-on-startup> 1 & lt;/load-on-startup>   & lt;/servlet>

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

servlet的生命周期结构有哪些