Servlet的生命周期和执行原理

Servlet的生命周期和执行原理

目录:

这次分享的知识点不多,但非常非常的重要

Serlvet的概念

  • 概念:运行在服务器端的小程序
  • Servlet就是一个接口:定义了java类被浏览器访问到(能被tomcat识别)的规则
  • 将来我们要定义一个类,实现Servlet接口,复写方法
  • 快速入门:
    1 创建JavaEE的项目(这里省略了哈~~老铁们)
    2 定义一个类,实现Servlet接口
    在这里插入图片描述如图:Serlvet是接口,里面定义了抽象方法,所以需要复写所有的抽象方法
    3 实现接口中的抽象方法在这里插入图片描述
    4 配置Servlet
    在这里插入图片描述
<servlet>        <!--约束文件中定义的根标签-->                 										 					
<servlet - name >demo1</servlet- name>		<!--Servlet资源的名字-->             
<servlet - class>cn. itcast。web. servlet . ServletDemo1</servlet - class>      <!--Servlet资源对应的类的全类名-->  
</servlet>
<servlet - mapping>
<servlet-name>demo1</servlet- name>
<url-pattern>/demo1</url-pattern>   <!--定义后面url查找java类资源所需要虚拟路径-->
</servlet- mapping>

上述为固定格式 后文细讲
设计到JavaEE中最重要知识点之一:反射(架构的灵魂嗷)

<servlet - class>cn. itcast。web. servlet . ServletDemo1</servlet - class> 
1.tomcat将全类名对应的字节码文件加载进内存。Class. forNane()
2.创建对象. cls. newInstanceO
3.调用方法- - -service

Servlet执行原理

  • 动态资源请求:
    浏览器请求动态资源的时候,通过逻辑判断,请求的是服务器端的JAVA类,该Java类没有主方法,依赖服务器执行的,并且遵循规则(Servlet接口)
  • Servlet执行原理:
    1 当服务器接收到客户端浏览器的请求后,解析url路径,获取访问servlet资源路径
    2 url获取后先请求web.xml文件,<url-pattern>==》<servlet-name>==》<servlet - class>
    3 若2存在,则找到对应的全类名(反射)
    4 tomcat会将字节码文件加载进入内存,并创建其对象cls.newInstance()方法
    5 调用其方法
    如图:
    在这里插入图片描述

Serlvet的生命周期

历程

1 被创建:执行init方法,只执行一次

  • 说明一个Servlet在内存中只存在一个对象,说明Servlet是单例的
      * 多用户(多线程)访问时可能会产生线程安全的问题
       * 解决:尽量不要在Servlet中定义成员变量(定义了也不要对其修改值)
  • Servlet创建时间:
      * 默认的情况下,第一次被访问的时候,Servlet被创建
       * 可以在web.xml中最后配置指定创建Servlet创建时机
        * 第一次被访问的时候,创建
          *的值为-1(默认)
        * 服务器启动时,创建
          *的值为0或正数

2 被执行:执行service方法,执行多次
  * 每次访问的时候都会被执行一次

3 被销毁:执行destroy方法
  * 当Servlet被销毁的时候被执行
  * 只有服务器正常关闭的时候才会执行
  类似于遗言(destroy)和去世的人(服务器)//不太恰当嗷

Servlet方法:


1 init方法:

  • 初始化方法
  • Servlet建立时被执行 只执行一次
    举例:在init方法里打印一个变量,启动服务器,多次访问得出结果:
    在这里插入图片描述事实证明:访问多少次,变量a的值都只是一开始增加了后面没有增加
    说明:启动服务器时找到并调用了该方法。
    2 service方法:
    举例:在service方法里打印另一个变量,启动服务器,多次访问得出结果:
    在这里插入图片描述
    3 destroy方法:
      * 服务器正常关闭的时候会执行一次
      * 非正常关闭:直接点叉叉关掉
    4 ServletConfig:获取ServletConfig对象的配置信息(先不做详解)
    5 getServletInfo:获取Servlet的信息(先不做详解)
    **

Servlet 3.0

  • 从JDK6以后才支持Servlet3.0版本
  • 好处:
      * 支持注解配置,可以不要web.xml了。
  • 步骤:
      1 创建JavaEE项目,选择Servlet的3.0以上的版本,可以不创建web.xml
      2 定义一个类,实现Servlet接口
      3 复写方法
      4 在类上使用@WebServlet注解,进行配置
       * @WebServlet(“资源路径”)或者@WebServlet(urlpatten=“资源路径”)
  • 虚拟路径:项目的路径
  • 资源路径:就是资源的路径

最后送上一张图:
在这里插入图片描述
错了!重来
在这里插入图片描述学习不易,贵在坚持,希望各位码友能越走越远!

扫描二维码关注公众号,回复: 11851933 查看本文章

猜你喜欢

转载自blog.csdn.net/BlackBtuWhite/article/details/104780896