概念

  • servlet是JavaEE提供的一个接口
  • java servlet(java服务器小程序)
    • 一个基于java技术的web组件运行在服务器端,
    • 由servlet容器所管理,用于生成动态资源
  • servlet容器有时被叫成servlet引擎
    • 是web服务器或应用程序的一部分
    • 用于在发送的请求响应之上提供网络服务
    • servlet不能独立运行,必须部署到servlet容器中由容器实例化和调用servlet方法
  • 优点
    • 单实例多线程运行,每个请求在独立的线程中运行
    • 可升级性,能响应更多的请求,servlet容器使用一个线程,占用优先的系统空间
    • 有标准的API,被更多web服务器所支持
    • servlet是java编写的,拥有java的所有优点,包括易开发和平台独立性
    • servlet容器给servlet提供额外的功能,如错误处理和安全
  • servlet容器的分类
    • 独立的servlet容器
      • 基于java技术的web服务器时,servlet容器作为构成web服务器的一部分而存在
    • 进程内的servlet容器
      • web服务器在内部地址空间中打开一个jvm,使得java容器可以在此jvm中加载并运行servlet
      • web服务器获得一个调用servlet请求时,将请求传递给java容器(JNI),java容器再交给servlet处理
      • 进程内的servlet容器对单进程、多线程的服务器非常适合,提高运行速度,但伸缩性有所不足
    • 进程外的servlet容器
      • java容器的servlet运行在web服务器外部的地址中
      • web服务器插件和java容器使用IPC机制(TCP/IP)进行通信
      • web服务器获得一个调用servlet的请求时,将请求传递给外部的java容器,java容器交给servlet处理
      • 进程外的servlet容器响应速度不如进程内部servlet快,但具有更好的伸缩性和稳定性

        servlet、servlet容器、servlet引擎的关系 servlet引擎是servlet的别名 servlet容器内部包含多个servlet,并且servlet容器为servlet提供额外的功能

image.png

servlet

servlet生命周期

  1. 初始化阶段
    1. init():
      1. 初始化servlet,只有第一次请求时才会被调用
      2. 建立数据库连接、获取配置信息等
  2. 客户请求响应阶段
    1. service()
    2. doGet()
    3. doPost()
  3. 终止阶段
    1. destroy()

      HTTPservlet