Servlet的生命周期和不同的映射方式

tech2022-09-21  59

一、Servlet介绍 1.Servlet的生命周期

- 对象的生命周期,就是对象从出生到死亡的过程。即:出生 -> 活着 -> 死亡。官方说法是对象创建到销毁的过程 - 出生:请求第一次到达 Servlet 时,对象就创建出来,并且初始化成功。只出生(创建)一次,将对象放到内存中 - 活着:服务器提供服务的整个过程中,该对象一直存在,每次都是执行 service 方法 - 死亡:当服务停止时,或者服务器宕机时,对象死亡 - 结论:Servlet 对象只会创建一次,销毁一次。所以 Servlet 对象只有一个实例。如果一个对象实例在应用中是唯一的存在,那么我们就称它为单例模式

2.Servlet不同映射方式

① 第一种 具体名称的方式。访问的资源路径必须和映射配置完全相同 在web.xml中配置 LoginServlet com.itheima.controller.LoginServlet LoginServlet /loginServlet 浏览器地址写http://localhost:8080/Web/loginServlet

②第二种 / 开头 + 通配符的方式。只要符合目录结构即可,不用考虑结尾是什么 在web.xml中配置 LoginServlet com.itheima.controller.LoginServlet LoginServlet /login/* 浏览器地址写http://localhost:8080/Web/login/abcd(自定义) 也可以不写http://localhost:8080/Web/login

③ 第三种 通配符 + 固定格式结尾的方式。只要符合固定结尾格式即可,不用考虑前面的路径 在web.xml中配置 LoginServlet com.itheima.controller.LoginServlet LoginServlet /login/* 浏览器地址写http://localhost:8080/Web/abcd(自定义).action

注意:优先级问题。越是具体的优先级越高,越是模糊通用的优先级越低。第一种 -> 第二种 -> 第三种

3.Servlet创建时机

①第一次访问时创建 优势:减少对服务器内存的浪费。提高了服务器启动的效率 弊端:如果有一些要在应用加载时就做的初始化操作,无法完成

②服务器加载时创建 优势:提前创建好对象,提高了首次执行的效率。可以完成一些应用加载时要做的初始化操作 弊端:对服务器内存占用较多,影响了服务器启动的效率

二、ServletContext介绍

ServletContext 是应用上下文对象。每一个应用中只有一个 ServletContext 对象。作用:可以获得应用的全局初始化参数和达到 Servlet 之间的数据共享。生命周期:应用一加载则创建,应用被停止则销毁。 出生——活着——死亡 出生: 应用一加载,该对象就被创建出来了。一个应用只有一个实例对象。(Servlet和ServletContext都是单例的) 活着:只要应用一直提供服务,该对象就一直存在。 死亡:应用被卸载(或者服务器挂了),该对象消亡。
最新回复(0)