EasyDemo*Servlet特性(五)

一、Servlet特性

  1. Servlet的生命周期
    1. Servlet的生命周期

1.1.1什么是Servlet的声明周期

*容器如何创建Servlet对象、如何为Servlet对象分配资源、如何调用Servlet对象的方法来处理请求、以及如何销毁Servlet对象的整个过程

1.1.2生命周期的四个阶段

*阶段一:实例化

*什么是实例化?

-容器调用Servlet的构造器,创建一个Servlet对象

*什么时候实例化?

-情形1,开始容器里面没有Servlet对象,收到请求后创建Servlet对象

-情形2,容器启动后就立即创建响应的实例

*阶段二:初始化

*什么是初始化?

-容器在创建好Servlet对象后,会立即调用该对象的init方法

-一般情况下,我们不用写init方法,因为GenericServlet已经提供了init方法的实现(将容器传递过来的ServletConfig对象保存下来,并且,提供了getServletConfig方法来获得ServletConfig对象)

*init方法只会执行一次

*Servlet的初始化参数如何配置

*如何读取Servlet的初始化参数

*阶段三:就绪

-容器收到请求或调用Servlet对象的service()来处理请求

*阶段四:销毁

-容器依据自身的算法删除Servlet对象,删除前会调用destory()

-只会执行一次

-可以override destory方法来实现自己的处理逻辑

-应用程序卸载时一定会调用destory方法

1.1.3Servlet生命周期原理图

1.1.4 Servlet核心接口和类

*Servlet接口,GenericServlet抽象类,HttpServlet抽象类

1.1.5 Servlet接口

*Servlet接口主要包括

1.1.6 Servlet核心类

*GenericServlet抽象类实现了servlet接口中的部分方法(init和destroy方法)

*HttpServlet抽象类继承了GenericServlet,实现了service方法

  1. ServletContext

1.1什么是Servlet上下文

1.1.1什么是Servlet上下文

*容器启动后,会为每一个Web应用创建唯一的一个符合ServletContext接口要求的对象,该对象就是servlet上下文

*特点

-唯一性(一个Web应用对应一个servlet)

-一直存在(只要容器股关闭,应用没有被卸载,servlet上下文就一直存在)

1.1.2如何获得Servlet上下文

1.1.3 Servlet上下文的作用及特点

  1. Servlet线程安全问题

1.1 Servlet线程安全问题

1.1.1为什么会有线程安全问题

*容器收到请求后,会启动一个线程来进行相应的处理

*默认情况下,容器只会为每个Servlet创建一个实例

*如果同时有多个请求访问同一个Servlet,则肯定会有多个线程访问这个Servlet的实例。如果这些线程要修改Servlet实例的某个属性,就有可能发生线程安全问题

1.1.2如何保证Servlet的线程安全

*使用synchronized对代码加锁即可

 

猜你喜欢

转载自blog.csdn.net/qq_36287601/article/details/81428502