深入分析java web技术内幕----读书笔记(五)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/63253241 这位大侠,这是我的公众号:程序员江湖。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/63253241

这位大侠,这是我的公众号:程序员江湖。 
分享程序员面试与技术的那些事。 干货满满,关注就送。 
这里写图片描述

servlet+tomcat原理剖析

 

servlet工作原理分析

 

servlet是运行在服务器上的java程序。

1ContextConfig负责web应用的配置文件的解析

2servlet被包装为wrapper对象,被添加到context中作为子容器,而web.xml被解析到context中,所以context才是真正的servlet容器,一个web应用对应一个context容器。

 

3

 

到达wrapper后还可能经过listener和filter。

listener涵盖servlet生命周期的每个事件。

filter用来转发请求和处理请求,传递filterchain对象,使用责任链模式,有init,dofilter,destroy这样的生命周期。

url-pattren的解析由mapper类来定义和完成。会分配到指定的servlet或者filter。

 

 

第十一章:

tomcat结构

 

核心是connector和container

 

1container只有一个,connector有多个,多个connector和一个container形成一个service,service由server管理,tomcat的生命周期由server控制。

 

2service可以为外部提供服务。其中connector负责创建 request和response用来接受请求和交换数据。

 

3container通过多线程处理多个connector的请求,是设计的核心,connector可分为connetor、processer、protocal。

 

其中connector封装socket成为request和response,并交给container进行处理。

 

4container包含engine host context wrapper,四个组件是父子关系。

 

5、

 

engine没有父容器

 

一个context对应一个应用,但需要war时就要有host容器,因为要靠host解析web.xml

 

 

 

使用wrapper容器可以实现servlet和tomcat容器的脱耦,在此容器中会调用servlet的init方法、然后调用filter方法,接着执行service。

 

 

设计模式:门面设计模式:

需要相互通信,但又不想暴露其他接口和数据时使用。

 

 

 

观察者模式:lifecycle和listener监听着servlet。

 

 

 

命令模式:connector封装请求作为命令传给container

 

责任链模式:从engine到host到context再到wrapper,体现责任链。

相关文章
|
6月前
|
算法 Java 程序员
论文翻译 | 【深入挖掘Java技术】「底层原理专题」深入分析一下并发编程之父Doug Lea的纽约州立大学的ForkJoin框架的本质和原理
本文深入探讨了一个Java框架的设计、实现及其性能。该框架遵循并行编程的理念,通过递归方式将问题分解为多个子任务,并利用工作窃取技术进行并行处理。所有子任务完成后,其结果被整合以形成完整的并行程序。 在总体设计上,该框架借鉴了Cilk工作窃取框架的核心理念。其核心技术主要聚焦于高效的任务队列构建和管理,以及工作线程的管理。经过实际性能测试,我们发现大多数程序的并行加速效果显著,但仍有优化空间,未来可能需要进一步研究改进方案。
83 3
论文翻译 | 【深入挖掘Java技术】「底层原理专题」深入分析一下并发编程之父Doug Lea的纽约州立大学的ForkJoin框架的本质和原理
|
6月前
|
缓存 自然语言处理 前端开发
深入分析Java编译原理
深入分析Java编译原理
74 0
|
11月前
|
Java 测试技术 API
读书笔记-Spring中更好的Java泛型操作API-ResolvableType
读书笔记-Spring中更好的Java泛型操作API-ResolvableType
73 0
|
缓存 算法 Java
《深入理解Java虚拟机》读书笔记(四)--GC的回收条件及Java对象的引用
《深入理解Java虚拟机》读书笔记(四)--GC的回收条件及Java对象的引用
234 0
|
存储 缓存 Java
《深入理解Java虚拟机》读书笔记(一)--java内存区域划分
《深入理解Java虚拟机》读书笔记(一)--java内存区域划分
64 0
|
存储 缓存 Java
【Java深层系列】「并发编程系列」深入分析和研究MappedByteBuffer的实现原理和开发指南
【Java深层系列】「并发编程系列」深入分析和研究MappedByteBuffer的实现原理和开发指南
198 1
|
Java C++
【Java技术专题】「原理专题」深入分析Java中finalize方法的作用和底层原理
【Java技术专题】「原理专题」深入分析Java中finalize方法的作用和底层原理
205 0
【Java技术专题】「原理专题」深入分析Java中finalize方法的作用和底层原理
|
设计模式 存储 Java
《深入分析Java Web技术内幕》深入之后的理解
## 0.前言 近期阅读了《深入分析Java Web技术内幕》这本书,书中涉及的知识点非常全面,让我对Java Web相关技术有了更加全面的认识,受益匪浅。这里跟大家分享下本人深入后印象比较深刻的几个点。 ## 1.NIO (Non-blocking IO) ### 1.1同步异步、阻塞非阻塞 - I/O交互中经常涉及同步/异步,阻塞/非阻塞。 - 要注意这两个是不同纬度
《深入分析Java Web技术内幕》深入之后的理解
|
安全 算法 Oracle
【Java技术指南】「编译器专题」深入分析探究“静态编译器”(JAVA\IDEA\ECJ编译器)是否可以实现代码优化?
【Java技术指南】「编译器专题」深入分析探究“静态编译器”(JAVA\IDEA\ECJ编译器)是否可以实现代码优化?
265 0
|
缓存 Java
【Java原理探索】深入分析JDK动态代理的源码 | Java开发实战
【Java原理探索】深入分析JDK动态代理的源码 | Java开发实战
74 0