设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 服务器 > 系统 > 正文

【深入揭秘Tomcat服务器底层原理】扒下这只又爱又恨的“Tom猫”(4)

发布时间:2019-11-27 12:48 所属栏目:52 来源:站长网
导读:根据 server.xml 配置的指定的 connector 以及端口监听 http、或者 ajp 请求 请求到来时建立连接,解析请求参数,创建 Request 和 Response 对象,调用顶层容器 pipeline 的 invoke 方法 容器之间层层调用,最终调用业

【深入揭秘Tomcat服务器底层原理】扒下这只又爱又恨的“Tom猫”

根据 server.xml 配置的指定的 connector 以及端口监听 http、或者 ajp 请求

请求到来时建立连接,解析请求参数,创建 Request 和 Response 对象,调用顶层容器 pipeline 的 invoke 方法

容器之间层层调用,最终调用业务 servlet 的 service 方法

Connector 将 response 流中的数据写到 socket 中

Pipeline 与 Valve

【深入揭秘Tomcat服务器底层原理】扒下这只又爱又恨的“Tom猫”

Pipeline 可以理解为现实中的管道,Valve 为管道中的阀门,Request 和 Response 对象在管道中 经过各个阀门的处理和控制。

每个容器的管道中都有一个必不可少的 basic valve,其他的都是可选的,basic valve 在管道中最 后调用,同时负责调用子容器的第一个 valve。

Valve 中主要的三个方法:setNext、getNext、invoke;valve 之间的关系是单向链式结构,本身 invoke 方法中会调用下一个 valve 的 invoke 方法。

各层容器对应的 basic valve 分别是 StandardEngineValve、StandardHostValve、 StandardContextValve、StandardWrapperValve。

JSP引擎

【深入揭秘Tomcat服务器底层原理】扒下这只又爱又恨的“Tom猫”

JSP 生命周期

编译阶段:servlet 容器编译 servlet 源文

件,生成 servlet 类

初始化阶段:加载与 JSP 对应的 servlet 类, 创建其实例,并调用它的初始化方法

执行阶段:调用与 JSP 对应的 servlet 实例的 服务方法

销毁阶段:调用与 JSP 对应的 servlet 实例的 销毁方法,然后销毁 servlet 实例

JSP元素

代码片段:<%>

JSP声明:<%! ...="">

JSP表达式:<%=>

JSP注释:<%-->

JSP指令:<%@ directive="" attribute="“value”">

JSP行为:

HTML元素:html/head/body/div/p/…

JSP隐式对象:request、response、out、session、application、config、pageContext、page、Exception

JSP 元素说明

代码片段:包含任意量的 Java 语句、变量、方法或表达式;

JSP 声明:一个声明语句可以声明一个或多个变量、方法,供后面的 Java 代码使用;

JSP 表达式:输出 Java 表达式的值,String 形式;

JSP 注释:为代码作注释以及将某段代码注释掉

JSP 指令:用来设置与整个 JSP 页面相关的属性

<%@ page="" ...="">定义页面的依赖属性,比如 language、contentType、errorPage、 isErrorPage、import、isThreadSafe、session 等等

<%@ include="" ...="">包含其他的 JSP 文件、HTML 文件或文本文件,是该 JSP 文件的一部分,会被同时编译执行

<%@ taglib="" ...="">引入标签库的定义,可以是自定义标签

JSP 行为:jsp:include、jsp:useBean、jsp:setProperty、jsp:getProperty、jsp:forward

JSP 解析过程

【深入揭秘Tomcat服务器底层原理】扒下这只又爱又恨的“Tom猫”

代码片段:在_jspService()方法内直接输出

JSP 声明: 在 servlet 类中进行输出

JSP 表达式:在_jspService()方法内直接输出

JSP 注释:直接忽略,不输出

JSP 指令:根据不同指令进行区分,include:对引入的文件进行解析;page 相关的属性会做为 JSP 的属性,影响的是解析和请求处理时的行为

JSP 行为:不同的行为有不同的处理方式,jsp:useBean 为例,会从 pageContext 根据 scope 的 类别获取 bean 对象,如果没有会创建 bean,同时存到相应 scope 的 pageContext 中

HTML:在_jspService()方法内直接输出

JSP 隐式对象:在_jspService()方法会进行声明,只能在方法中使用;

Connector

【深入揭秘Tomcat服务器底层原理】扒下这只又爱又恨的“Tom猫”

Http:HTTP 是超文本传输协议,是客户端浏览器或其他程序与 Web 服务器之间的应用层通信协议。

AJP:Apache JServ 协议(AJP)是一种二进制协议,专门代理从 Web 服务器到位于后端的应用 程序服务器的入站请求。

阻塞 IO

【深入揭秘Tomcat服务器底层原理】扒下这只又爱又恨的“Tom猫”

非阻塞 IO

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读