首页IT科技内存介绍(内存马基础知识)

内存介绍(内存马基础知识)

时间2025-06-20 09:04:58分类IT科技浏览4863
导读:javaweb三大组件 java web:Servlet,Filter,Listener...

javaweb三大组件

java web:Servlet            ,Filter                  ,Listener

三大组件的各自功能:

Servlet:用我的话来讲它就像是一个处理器       ,它会接受http请求然后把他封装成 HttpServletRequest 和HttpServletResponse 对象         ,然后进行处理 Filter:这是一个双向的拦截器吧                  ,为什么叫双向?它会在request到达servlet之前处理一遍          ,然后servlet发送response之后到达客户端之前处理一遍      ,也就像是在客户端和servlet中间的代理一样都要走它哪里走一遍 Listener            。Application            、Session 和 Request 三大对象创建                  、销毁或者往其中添加       、修改         、删除属性时自动执行代码的功能组件                  ,有一个直白一点的解释: 事件:一件事情 事件源:事件发生的地方 监听器:一个对象 注册监听:将事件源             ,事件   ,监听器                  ,绑定在一起                  。当事件源上发生某件事情的时候                ,执行监听器代码

tomcat架构

Tomcat功能

从最开始Tomcat的介绍来看,Tomcat有点像一个Servlet官方一点就是:Tomcat 是 Web 应用服务器               ,是一个 Servlet/JSP 容器                   ,而 Servlet 容器从上到下分别是 Engine                  、Host          、Context      、Wrapper       。

顶层架构

来一张顶层架构图

Service主要包含两个部分:Connector和Container         。从上图中可以看出 Tomcat 的心脏就是这两个组件    ,他们的作用如下:

1                  、Connector用于处理连接相关的事情            ,并提供Socket与Request和Response相关的转化; 2             、Container用于封装和管理Servlet                  ,以及具体处理Request请求;

一个tomcat只能启动一个server但是可以有多个service       ,         ,一个Service只有一个Container                  ,但是可以有多个Connectors          ,代表的就是一个service运行有多个连接

多个connector和一个Container行成一个service      ,service就可以向提供服务了                  ,但是service是可以有多个的所以就需要有东西来控制service的生产周期             ,跟k8s的架构有些类似类似在k8s中的(Kubelet 负责维护容器的生命周期)

connecter

作为Tomcat的核心组件之一   ,它是用来接受客户端发送的请求然后把它一个 Request 和 Response 对象分别用于和请求端交换数据(这里转换的不是Servletrequest()和ServletResponse)

socket 通信 解析处理应用层协议                  ,如将 socket 连接封装成 request 和 response 对象                ,后续交给 Container 来处理 将 Request 转换为 ServletRequest,将 Response 转换为 ServletResponse Adapter 组件

由于协议的不同               ,Tomcat 定义了自己的 Request 类来存放请求信息                   ,但是这个不是标准的 ServletRequest                  。于是需要使用 Adapter 将 Tomcat Request 对象转成 ServletRequest 对象    ,然后就能调用容器的 service 方法          。

这个组件的作用就是把tomcat的特有的request转化成Servlet的Sservletreques      。

Adapter 组件的结构图

Container组件

Container(又名Catalina)用于处理Connector发过来的servlet连接请求            ,它是容器的父接口                  ,所有子容器都必须实现这个接口       ,Container 容器的设计用的是典型的责任链的设计模式         ,它有四个子容器组件构成                  ,分别是:Engine   、Host                  、Context                、Wrapper          ,这四个组件不是平行的      ,而是父子关系                  ,Engine 包含 Host             ,Host 包含 Context   ,Context 包含 Wrapper                  。

Tomcat 设计了 4 种容器: Engine、Host               、Context                   、Wrapper                   ,这四种容器是父子关系

Engine: 最顶层容器组件                ,可以包含多个 Host             。实现类为 org.apache.catalina.core.StandardEngine Host: 代表一个虚拟主机,每个虚拟主机和某个域名 Domain Name 相匹配               ,可以包含多个 Context   。实现类为 org.apache.catalina.core.StandardHost Context: 一个 Context 对应于一个 Web 应用                   ,可以包含多个 Wrapper                  。实现类为 org.apache.catalina.core.StandardContext Wrapper: 一个 Wrapper 对应一个 Servlet                。负责管理 Servlet    ,包括 Servlet 的装载    、初始化            、执行以及资源回收。实现类为 org.apache.catalina.core.StandardWrapper

Tomcat的类加载机制

由于 Tomcat 中有多个 WebApp 同时要确保之间相互隔离            ,所以 Tomcat 的类加载机制也不是传统的双亲委派机制               。

Tomcat 自定义的类加载器 WebAppClassloader 为了确保隔离多个 WebApp 之间相互隔离                  ,所以打破了双亲委托机制                   。每个 WebApp 用一个独有的 ClassLoader 实例来优先处理加载    。它首先尝试自己加载某个类       ,如果找不到再交给父类加载器         ,其目的是优先加载 WEB 应用自己定义的类            。

同时为了防止 WEB 应用自己的类覆盖 JRE 的核心类                  ,在本地 WEB 应用目录下查找之前          ,先使用 ExtClassLoader(使用双亲委托机制)去加载      ,这样既打破了双亲委托                  ,同时也能安全加载类                  。

这一点在CommonsBeanutils1链中就有体现             ,就是它tomcat有自己的

小结

(1)Tomcat中只有一个Server   ,一个Server可以有多个Service                  ,一个Service可以有多个Connector和一个Container;

(2) Server掌管着整个Tomcat的生死大权;

(4)Service 是对外提供服务的;

(5)Connector用于接受请求并将请求封装成Request和Response来具体处理;

(6)Container用于封装和管理Servlet                ,以及具体处理request请求;

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
windows10怎么删除开始菜单(如何删除Win11开始菜单的推荐的项目?Win11关闭开始推荐的项目的方法)