Servlet的生命周期【JAVAEE基础】

Servlet生命周期

1.生命周期表示一个java对象从最初被创建到最终被销毁,经历的所有过程。

2.Servlet对象的生命周期

  Servlet对象的生命周期,javaweb程序员是无权干涉的,包括Servlet对象相关方法的调用,都是无权干涉的
  Servlet对象从最初的创建,方法的调用,以及对象的销毁,整个过程,都是由web容器来管理的。
  Web Container管理Servlet对象的生命周期。

3.“默认情况下”,Servlet对象在对象在WEB服务器启动阶段不会被实例化【想要启动时实例化,需要特殊配置web.xml】

4.描述Servlet对象生命周期

1) 用户在浏览器地址栏上输入URL: http://localhost:8080/prj_servlet_01_war_exploded/hello
2) WEB容器截取请求路径 /prj_servlet_01_war_exploded/hello
3)WEB容器在容器上下文中找请求路径 /prj_servlet_01_war_exploded/hello 对应的Servlet对象
4)若没有找到对应的Servlet对象-(没找到9中的容器,找10中的容器)
	4.1) 通过web.xml文件中相关的配置信息,得到请求路径/hello 对应的Servlet完整类名
	4.2)通过反射机制,调用Servlet类的无参构造方法完成Servlet对象的实例化
    4.3)web容器调用Servlet对象的init()方法完成初始化操作
	4.4)web容器调用Servlet对象的service()方法提供服务
5)若找到对应的Servlet对象-(找到9中的容器)
	5.1)web容器直接调用Servlet对象的service()方法提供服务
6) web容器关闭的时候/webapp重新部署的时候/该Servlet对象长时间没有用户再次访问的时候
   web容器会将该Servlet对象销毁,在销毁该对象之前,web容器会调用Servlet对象的destroy方法,
   完成销毁之前的准备

5.总结

 5.1 Servlet类的构造方法只执行一次
 5.2 Servlet对象的init方法只执行一次
 5.3 Servlet对象的service方法,只要用户请求一次,则执行一次
 5.4 Servlet对象的destroy方法只执行一次

流程

6.注意

  init方法执行的时候,Servlet对象已经被创建好了。
  destroy方法执行的时候,Servlet对象还没有被销毁,即将被销毁

7.Servlet对象是单例,但是不符合单例设计模式,只能称为伪装单例
单例模式的构造方法是私有化的
所以Servlet对象是在单实例多线程的环境下运行的。 那么Servlet对象中若有实例变量,
并且实例变量涉及到修改操作,Servlet对象一定会存在线程安全问题,
所以不建议在Servlet对象中使用实例变量,尽量使用局部变量

8.在服务器启动阶段,实例化Servlet对象,需要在web.xml文件中进行相关的配置,例如:
1//"1"表示运行的优先级,0最高

9.Servlet对象实例化后
大多数的WEB容器都是将Servlet对象以及对应的url-pattern存储到MAp集合中了

 WEB容器中有这样一个Map集合 
 Map<String,Servlet>集合
 key       value
 ----------------
 /login     LoginServlet对象引用
 /delete    DeleteServlet对象调用
 /save      SaveServlet对象引用

10.服务器在启动的时候会解析各个webapp的web.xml文件
将web.xml文件中的url-pattern和对应Servlet完整类名存储到Map集合中了

 在Web容器中有这样一个Map集合
 Map<String,String>集合
 key       value
 ----------------
 /login     com.chif.loginServlet
 /delete    com.chif.deleteServlet
 /save      com.chif.saveServlet

8. Servlet3.0

*好处:支持注解配置,可以不写web.xml
  *步骤:
      1.创建项目,选择Servlet3.0以上的版本。
      2.定义一个Servlet类。
      3.复写方法
      4.在类上使用@webServlet注解,进行配置
        @webServlet("资源路径")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章