Servlet原理

servlet是由web服务器调用,web服务器在收到浏览器请求后,会判断servlet是否存在,若不存在则装载创建servlet的实例并初始化(若存在则跳过此步骤),然后调用service方法对请求进行处理。

一、UML

Servlet UML
从图中,可以看出:

1.抽象类HttpServlet继承抽象类GenericServlet,其有两个比较关键的方法,doGet()和doPost()

2.GenericServlet实现接口Servlet,ServletConfig,Serializable

3.HelloServlet(用户自定义Servlet类)继承HttpServlet,重写抽象类HttpServlet的doGet()和doPost()方法

注:任何一个用户自定义Servlet,只需重写抽象类HttpServlet的doPost()和doGet()即可,如上图的HelloServlet

二、Servlet在容器中的执行过程

Servlet在容器中的执行过程
servlet执行流程
流程:

  1. 浏览器向服务器发出GET/Post请求。

  2. 服务器上的容器逻辑接收到该url,根据该url判断为Servlet请求,此时容器逻辑将产生两个对象:请求对象(HttpServletRequest)和响应对象(HttpServletResponce)

  3. 容器逻辑根据url找到目标Servlet,且创建一个线程A。

  4. 容器逻辑将刚才创建的请求对象和响应对象传递给线程A。

  5. 容器逻辑调用Servlet的service()方法。

  6. service()方法根据请求类型调用doGet()或doPost()方法。

  7. doGet()或doPost()执行完后,将结果返回给容器逻辑。

  8. 线程A被销毁或被放在线程池中。

三、Servlet在容器中的生命周期

  1. 加载和实例化
    当Servlet容器启动时,或者在容器检测到需要这个Servlet来响应第一个请求时,创建Servlet对象(实例)。
  2. 初始化
    在Servlet实例化之后,容器将调用Servlet的init()初始化这个对象。
  3. 处理请求
    Servlet容器调用Servlet的service()方法对请求进行处理。
  4. 终止服务
    当容器检测到一个Servlet实例应该从服务中被移除的时候,容器就会调用实例的destroy(),以便让该实例可以释放它所使用的资源,保存数据到持久存储设备中。当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收。如果再次需要这个Servlet处理请求,Servlet容器会创建一个新的Servlet实例。
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值