EasyDemo*Servlet特性(五)
一、Servlet特性
- Servlet的生命周期
- 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方法
- ServletContext
1.1什么是Servlet上下文
1.1.1什么是Servlet上下文
*容器启动后,会为每一个Web应用创建唯一的一个符合ServletContext接口要求的对象,该对象就是servlet上下文
*特点
-唯一性(一个Web应用对应一个servlet)
-一直存在(只要容器股关闭,应用没有被卸载,servlet上下文就一直存在)
1.1.2如何获得Servlet上下文
1.1.3 Servlet上下文的作用及特点
- Servlet线程安全问题
1.1 Servlet线程安全问题
1.1.1为什么会有线程安全问题
*容器收到请求后,会启动一个线程来进行相应的处理
*默认情况下,容器只会为每个Servlet创建一个实例
*如果同时有多个请求访问同一个Servlet,则肯定会有多个线程访问这个Servlet的实例。如果这些线程要修改Servlet实例的某个属性,就有可能发生线程安全问题
1.1.2如何保证Servlet的线程安全
*使用synchronized对代码加锁即可