深入分析Java Web-Servlet工作原理

前几篇已经详细介绍了 Java 的原理还有 JVM 的原理,但是一直没有去讲 Web ,也就是 Java 是如何与 Web 建立联系的,如果能将 Java 可以输出的内容,显示到网页上面, 或者将 Java 连接数据库,把数据库的内容输出到页面上,就是所谓的动态网站了。如果你已经学了HTML 标签,那么你应该知道,写好的网页文件,双击在浏览器打开,就可以看到页面了,在 Java 里有 扩展名为 .jsp 的文件,它可以写HTML标签,同时也可以嵌入 Java 代码实现 Java 与网页互动,但是 .jsp 页面是不能像普通的 .html 文件双击打开并显示的,需要一个“容器”,比如 Tomcat 也就是说我们想查看 .jsp 的真实面貌就要通过 Tomcat 才能看到,下面来讲讲 Tomcat 里 Servlet 容器是如何工作的。

Servlet

Servlet(Server Applet),全称Java Servlet,未有中文译文。 是用Java编写的服务器端程序。 其主要功能在于交互式地浏览和修改数据,生成动态Web内容。
以Tomcat 为例来介绍 Servlet 容器是如何管理 Servlet 的。

Tomcat 容器模型

在这里插入图片描述
一个Context 对应一个 Web 工程,也就是我们 Tomcat 文件夹里的 webapps 放入 Web 工程。

Servlet 容器的启动过程

在这里插入图片描述

重点关注 StandardContext 容器启动过程

init 方法主要完成以下工作
  • 创建用于解析 XML 配置文件的 contextDigester 对象。
  • 读取默认的 context.xml 配置文件,如果存在则解析它。
  • 读取默认的 Host 配置文件,如果存在则解析它。
  • 读取默认的 Context 自身的配置文件,如果存在则解析它。
  • 设置 Context 的 DocBase。

ContextConfig 的 init 方法完成后,Context 容器就会执行 startInternal 方法,这个方法的启动逻辑比较复杂,主要包括以下几部分。

  • 创建读取资源文件对象。
  • 创建 ClassLoader 对象。
  • 设置应用的工作目录。
  • 启动相关的辅助类,如 logger、realm、resources 等。
  • 修改启动状态,通知感兴趣的观察者(Web 应用的配置)
  • 子容器的初始化。
  • 获取 ServletContext 并设置必要的参数。
  • 初始化“load on startup” 的 Servlet。
  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值