东莞网站建设网页推广,论坛网站开发费用,wordpress 游戏 模板,公司做网站该注意哪些一. 问什么要学习tomcat tomcat是目前非常流行的web容器#xff0c;其性能和稳定性也是非常出色的#xff0c;学习其框架设计和底层的实现#xff0c;不管是使用、性能调优#xff0c;还是应用框架设计方面#xff0c;肯定会有很大的帮助
二. 运行源码
1.下载源…
一. 问什么要学习tomcat tomcat是目前非常流行的web容器其性能和稳定性也是非常出色的学习其框架设计和底层的实现不管是使用、性能调优还是应用框架设计方面肯定会有很大的帮助
二. 运行源码
1.下载源码
Tomcat各版本源码https://archive.apache.org/dist/tomcat/
Tomcat安装包https://tomcat.apache.org/
为什么又要下载源码又要下载安装包
源码中webapps是没有编译的需要用安装包里的替换并且Tomcat用的是antbuild.xml依赖管理这种方式比较老现在都用maven、gradle了所以可以手动换成maven但是有些包在maven仓库中找不到可以从Tomcat安装包lib目录下获取。
2. 导入源码
导入下载好的apache-tomcat-9.0.54-src,并导入IDEA然后在根目录下新建lib目录让后将tomcat安装包中的jasper.jar复制过来在根目录中添加pom.xml文件并maven一下在org.apache.jasper.compiler中报错的内容注释掉 ?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.apache.tomcat/groupIdartifactIdtomcat9/artifactIdnametomcat9/nameversion9.0/versionbuildfinalNametomcat9/finalNamesourceDirectoryjava/sourceDirectory!--testSourceDirectorytest/testSourceDirectory test 下的有些文件报错因此将test文件夹去掉了--resourcesresourcedirectoryjava/directory/resource/resourcestestResourcestestResourcedirectorytest/directory/testResource/testResourcespluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.6.0/versionconfigurationencodingUTF-8/encodingsource1.8/sourcetarget1.8/target/configuration/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-jar-plugin/artifactIdversion3.0.2/version/plugin/plugins/builddependenciesdependencygroupIdorg.apache.ant/groupIdartifactIdant/artifactIdversion1.9.5/version/dependencydependencygroupIdorg.apache.ant/groupIdartifactIdant-apache-log4j/artifactIdversion1.9.5/version/dependencydependencygroupIdorg.apache.ant/groupIdartifactIdant-commons-logging/artifactIdversion1.9.5/version/dependencydependencygroupIdjavax.xml.rpc/groupIdartifactIdjavax.xml.rpc-api/artifactIdversion1.1/version/dependencydependencygroupIdwsdl4j/groupIdartifactIdwsdl4j/artifactIdversion1.6.2/version/dependencydependencygroupIdorg.eclipse.jdt.core.compiler/groupIdartifactIdecj/artifactIdversion4.6.1/version/dependencydependencygroupIdbiz.aQute.bnd/groupIdartifactIdbiz.aQute.bndlib/artifactIdversion5.2.0/versionscopeprovided/scope/dependency/dependencies
/project此时启动tomcat时会有乱码处理方式是
三、总结如何阅读源码 搭建源码阅读环境必不可少一定要做到手里有书眼里有源码心里有debug。
书具有引导和总结作用Tomcat源码那么多那么复杂不知道从哪里开始读。可以先跟着书的目录按章学习从整体到细节从外到内从简到繁快速建立起一个Tomcat基础架构网络
Tomcat是一个HTTP服务器和Servlet容器有两个核心组件连接器和容器链接器实现HTTP功能容器实现装载Servlet的功能。 一个Server可以包含多个Service一个Service包含多个Conector和一个Engine一个Engine包含多个Host一个Host包含多个Context一个Context包含多个Wrapper这些容器名称和层次关系是不是有些晕一个Context就是一个熟悉的web服务Wrapper可以理解为对Servlet的包装。 请求的响应从连接器–容器–连接器。连接器负责对外交流接收请求做一些封装然后交由容器处理容器处理完后再返回给连接器做响应。 连接器、容器从哪个开始学习呢连接器涉及网络编程HTTP协议等容器里有类加载、各种设计模式职责链、观察者事件监听模式用的最多容易理解吸收。如果对网络编程NIO、net、HTTP不是很熟悉的可以先从容器学起如果对RPC框架Netty等熟悉的那连接器就简单了。 带着任务和问题研究Tomcat源码。把整个Tomcat源码学习的艰巨工程划分为多个小任务带着疑问去研究学习。比如可以先从日常熟悉的server.xml配置开始搞懂里面的配置为什么这么配置这个路径为什么这样带着问题就是Tomcat如何做热加载如何部署加载一个web项目如何处理一个请求Tomcat生命周期是怎么实现的如何做到一键启停Tomcat为什么要自定义类加载器如何打破双亲委派等等。带着任务和问题及时正向反馈才能坚持把Tomcat这块硬骨头啃下来。 学习Tomcat源码也有一段时间了中间半途而废多次摸摸索索总结出一套适合自己的学习方式真的万事开头难好的开头成功一半好的方法事半功倍。后面会把我学习Tomcat源码的心得、过程持续分享出来希望对你有用。