JavaWeb学习笔记-07servlet生命周期
Posted Moon&&Dragon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb学习笔记-07servlet生命周期相关的知识,希望对你有一定的参考价值。
servlet生命周期
servlet的生命周期就是servlet的创建,对象如何分配,资源的准备,调用什么方法来进行处理,已经如何执行,销毁等
1、容器何时实例化servlet
当我们访问注册了的servlet后 会调用servlet的构造器 创建一个Servlet的实例
这里就存在了一个 优先级的问题,谁先被实例?
- 默认会在请求 调用的时候才实例化
- 可以通过 设置loadOnStartup属性 来进行启动的先后,属性 值越低,级别越高
- 如果 小于或者等于0,相当于 默认条件
- 大于等于0 相当于让 容器启动 的时候就 创建servlet实例
// 在注解设置loadOnStartup属性 @WebServlet(value ="/my",loadOnStartup = 1,}) public class MyServlet extends HttpServlet { // 构造器 public MyServlet() { System.out.println("我被实例化了..."); } }
2、初始化
调用init或者init(ServletConfig config)方法,初始化一些属性,或者绑定的变量
// 注解设置,在初始化servlet时候绑定参数 @WebServlet(value ="/my", loadOnStartup = 1, initParams = { @WebInitParam(name = "wh",value = "武汉"), @WebInitParam(name = "cs",value = "长沙") // @WebInitParam(name = "cs",value = "长沙")----map或者properties }) public class MyServlet extends HttpServlet { @Override public void init() throws ServletException { // 初始化参数 // 获得ServletConfig对象 String wh = getInitParameter("wh"); String cs = getInitParameter("cs"); System.out.println(wh+":"+cs); } }
3、就绪
- servlet实例已经创建,参数已经初始化以后就进入了就绪状态,就绪状态表示请求可以被调用,但是 实例化和初始化只有一次,就绪状态的service方法可以被无限调用
- 每当调用一次请求,都需要重新调用sercice方法
// 就绪 @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("我正在被调用!"); }
4、销毁
- 销毁容器里面 对应的当前的servlet资源
- 当java web服务软件被 重启时或停止时触发
// 销毁 @Override public void destroy() { System.out.println("我正在被销毁!"); }
以上是关于JavaWeb学习笔记-07servlet生命周期的主要内容,如果未能解决你的问题,请参考以下文章