Tomcat
文章平均质量分 98
卓立~
现在一家电商做广告平台,Java后端后端开发
展开
-
Spring MVC源码解读『Idea如何构建Spring MVC应用』
从工作几乎一直在使用开箱即用的Spring Boot,很少使用Spring MVC。在上篇文章介绍Spring MVC示例中搭建那个HelloWorld demo过程中,还费了一些周折。想着可能很多人的Java Web之旅都是从Spring Boot开启的,本篇文章我们就来介绍一下如何使用Idea构建Spring MVC应用,以及通过Idea部署Spring MVC应用。1. Idea构建并部署Spring MVC应用1.1 创建Web应用这里我们来看一个最简单的问题,如何通过Idea构建并部署原创 2020-12-21 07:36:21 · 646 阅读 · 1 评论 -
Tomcat源码解读『Tomcat类加载机制』
本篇文章我们来探索一下Tomcat的类加载机制,如果我们搜Tomcat的类加载机制,绝大多数结果都会给出答案——打破双亲委托机制。但是感觉很多文章介绍的都不是很清楚,所以本篇文章就从我的理解上来分析一下Tomcat的类加载机制,希望能讲的明白。关于JVM类加载机制,我们在之前的文章Java编程拾遗『Java ClassLoader工作机制』已经介绍过,有兴趣的可以去了解一下。1. Tomcat类加载机制要考虑的问题Tomcat作为Servlet容器,它负责加载我们的Servlet类,此外它还负.原创 2020-12-21 07:35:45 · 1419 阅读 · 2 评论 -
Tomcat源码解读『Tomcat是如何处理web请求的』
之前的四篇文章,我们介绍了Tomcat启动过程的实现:Tomcat源码解读『Tomcat是怎么启动的』 Tomcat源码解读『server.xml解析』 Tomcat源码解读『Context如何构建的』 Tomcat源码解读『web.xml解析』我们知道,Tomcat启动之后,就可以响应来自客户端的web请求了,本篇文章我们来看一下Tomcat容器是如何响应web请求的。1. Servlet是如何生效的做过Java Web的我们都知道,我们的具体业务处理逻辑是卸载Servlet中的,不难原创 2020-12-19 11:19:35 · 754 阅读 · 1 评论 -
Tomcat源码解读『web.xml解析』
上篇文章我们介绍了Tomcat Context是如何构建的,了解了Context构建的两种方式:Host启动,触发HostConfig的Lifecycle.START_EVENT事件监听,构建Context 后台线程,定期去执行Host的backgroundProcess方法,触发HostConfig的Lifecycle.PERIODIC_EVENT事件监听,构建Context这里的构建Context,指的是构建一个Context对象,并将构建好的Context对象与Host组件关联起来(调用hos原创 2020-12-19 11:17:36 · 1366 阅读 · 1 评论 -
Tomcat源码解读『Context如何构建的』
上一篇文章我们介绍了server.xml是如何解析的,其中在介绍Context解析时,提到,多数情况下,并不需要在server.xml中配置Context,而是由HostConfig自动扫描部署目录,以context.xml文件为基础进行解析创建(如果通过IDE启动Tomcat并部署应用,其Context配置将会被动态更新到server.xml中)。所以大多数情况下,Context并不会在server.xml解析时构建出来。那么Context是如何构建出来的?本篇文章就来探索一下Tomcat Conte原创 2020-12-19 11:15:04 · 443 阅读 · 1 评论 -
Tomcat源码解读『server.xml解析』
上篇文章我们介绍到,在Catalina的load方法中,完成了server.xml的解析,将server.xml配置的Server、Service、Connector、Engine、Host各组件实例化,并维护父子级关系。本篇文章我们来看一下server.xml是如何解析的。不难看到,parseServerXml方法执行后,各Tomcat组件就已经生成了。1. parseServerXml核心的解析逻辑就在上图38~49行:Digester digester = start ? c原创 2020-12-19 11:13:22 · 786 阅读 · 1 评论 -
Tomcat源码解读『Tomcat是怎么启动的』
上篇文章我们介绍了Tomcat的核心组件的的基本功能以及在Tomcat中的实现,但是这些组件类是如何被启动起来的?比如我们知道Context组件的功能是管理子容器Wraper的生命周期,那么在Context组件启动时,肯定要创建Wrapper实例并启动Wrapper。同理,我们知道Tomcat这么多组件,肯定有一个先后的启动过程(因为Tomcat的组件本来就是分层级的)。本篇文章我们就来介绍一下,Tomcat是怎么启动的。使用过Tomcat的我们都知道,可以通过Tomcat的/bin目录下的脚本star原创 2020-12-19 11:12:11 · 467 阅读 · 1 评论 -
Tomcat源码解读『基础类介绍』
通过之前两篇关于Tomcat的介绍,我们已经清楚知道Tomcat的作用及基本的工作原理。本篇文章开始,我们来从解读Tomcat源码。本篇先来介绍一下Tomcat的基础类,以便我们后续介绍Tomcat启动流程,工作流程。我们知道,Tomcat的能作为web容器正常工作,依赖于Server.xml配置文件,如下:<?xml version="1.0" encoding="UTF-8"?><Server port="8005" shutdown="SHUTDOWN"> &l原创 2020-12-19 11:10:59 · 628 阅读 · 1 评论 -
Tomcat系统架构
上篇文章,我们自定义实现了一个简单的不能再简单的Tomcat容器,大致了解了Tomcat的工作主要功能。本篇文章我们就来看一下正主——Tomcat,每一个从事Java Web开发的都需要了解的基础工具。Server:Tomcat顶层容器,可以包含一个或多个Service组件 Service:Server内部的中间组件,包含Connector和Container两个核心组件,负责将一个或多个Connector组件绑定在一个Container上 Connector:用于处理连接相关的事情,并提供So原创 2020-12-19 11:09:47 · 453 阅读 · 1 评论 -
自定义实现一个mini版Tomcat
通过之前的介绍,我们大致了解了Tomcat的基础功能,即为Servlet生效提供环境支持。那么Tomcat肯定需要提供以下基础功能:提供Socket服务:实现对某些端口的监听,从而实现请求到来时,Tomcat可以感知到。同时该Socket服务也需要支持HTTP协议。 封装请求和响应:通过之前的介绍,我们知道在我们开发Servlet时,Web容器已经将Context、Request、Response替我们封装好了,可以直接使用。Tomcat作为一款Servlet容器,肯定要支持这项功能。 请求分发:一原创 2020-12-19 11:08:32 · 1082 阅读 · 1 评论 -
Java Web三大组件
上篇文章我们介绍了Servlet和Jsp以及一些Java Web开发的基础概念,本篇文章我们来介绍另一Java Web开发中的重要概念——Java Web三大组件,即Servlet、Filter和Listener。1. Servlet由于我们上篇文章已经介绍过Servlet了,这里就不再详细介绍了,透过现象看本质——什么是servlet。2. FilterFilter(过滤器)用于拦截用户请求,在服务器作出响应前,可以在拦截后修改request和response。可以实现一次编码,多处应用。原创 2020-12-19 11:05:56 · 963 阅读 · 1 评论 -
透过现象看本质——什么是servlet
我们通过几篇文章介绍了Spring的IOC和AOP两大属性,本来打算开始介绍Spring MVC的。但是想了一下,在介绍MVC框架之前,还是应该来缕清MVC底层的本质——Servlet,这个看着“非常久远”的概念,以便我们能更好地了解学习框架。提到Servlet,有很多人可能是有些陌生的,因为在工作中一般很少直接用到Servlet,都是直接上手框架,以至于很容易出现如下两种看法:框架和Servlet割离,认为是两个概念,比如“Servlet还在使用吗” 知道框架和Servlet有关联,但把Serv原创 2020-12-19 11:03:30 · 702 阅读 · 2 评论