-
2022-02-22 21:33:53
Tomcat源码环境构建
工欲善其事必先利其器,为了学好Tomcat源码,我们需要先在本地构建一个Tomcat的运行环境。
1.源码环境下载
源码有两种下载方式:
1.1 官网下载
https://tomcat.apache.org/
1.2 GitHub下载
当然你也可以通过GitHub来拉取源代码
https://github.com/apache/tomcat
2.Maven环境搭建
2.1 环境准备
打开IEDA导入项目,然后在项目中创建一个新的pom.xml文件,里面的内容为:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.apache.tomcat</groupId> <artifactId>apache-tomcat</artifactId> <version>8.5</version> <dependencies> <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</artifactId> <version>1.10.4</version> </dependency> <dependency> <groupId>wsdl4j</groupId> <artifactId>wsdl4j</artifactId> <version>1.6.2</version> </dependency> <dependency> <groupId>javax.xml</groupId> <artifactId>jaxrpc-api</artifactId> <version>1.1</version> </dependency> <dependency> <groupId>org.eclipse.jdt.core.compiler</groupId> <artifactId>ecj</artifactId> <version>4.5.1</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> </dependency> </dependencies> <build> <finalName>apache-tomcat</finalName> <sourceDirectory>java</sourceDirectory> <resources> <resource> <directory>java</directory> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> </project>
然后设置项目为Maven项目,选中pom.xml文件,鼠标右点。选择
Add as Maven Project
.在右侧出现的Maven菜单中选择编译项目(compile)
2.2 项目启动
编译成功后进入 Bootstrap中,启动main方法
出现如下提示,说明启动成功,只是中文乱码了
2.3 解决中文乱码问题
中文乱码问题的解决方案,修改两处地方即可
1.修改org.apache.jasper.compiler.Localizer#getMessage(java.lang.String)方法
public static String getMessage(String errCode) { String errMsg = errCode; try { if (bundle != null) { errMsg = bundle.getString(errCode); } } catch (MissingResourceException e) { } try{ errMsg = new String(errMsg.getBytes("ISO-8859-1"),"UTF-8"); }catch (UnsupportedEncodingException e){ e.printStackTrace(); } return errMsg; }
2.修改org.apache.tomcat.util.res.StringManager#getString(java.lang.String)
重启服务
启动正常,但是访问的时候出现了问题
2.4 解决不支持JSP的问题
启动成功后,在访问首页的时候,出现了500错误,而且提示
无法为JSP编译类
。原因是无法编译jsp。解决也很简单,按照下面步骤操作即可
上面的报错解决方式,可以在org.apache.catalina.startup.ContextConfig类中的configureStart方法中,添加一下JSP解析器初始化即可
context.addServletContainerInitializer(new JasperInitializer(), null);
重启服务:访问搞定
到此Tomcat的源码环境我们就已经准备好了,接下来就可以开始我们的Tomcat源码之旅了!!!
更多相关内容 -
tomcat源码
2018-11-09 15:59:36此文件给我自己带来了很大的帮助,希望能帮助迷茫的你,让你的小船走的更加遥远,加油吧 代码君 -
Tomcat源码分析
2021-02-03 06:52:24总体架构:1、面向组件架构2、基于JMX3、事件侦听tomcat代码看似很庞大,但从结构上看却很清晰和简单,它主要由一堆组件组成,如Server、Service、Connector等,并基于JMX管理这些组件,另外实现以上接口的组件也... -
Tomcat源码apache-tomcat-8.5.47-src.zip
2020-05-07 09:59:21这个是一个Tomcat源码,喜欢代码分析的课可以参考这个源码进行学习,网上有很多的源码导入方式,可以参考网上的源码导入方式来进行Tomcat源码学习 -
eclipse运行tomcat源码:修改源码:重新编译:重新打包
2019-01-11 15:26:201.tomcat源码文件 2.tomcat程序文件 3.Ant程序文件 4.tomcat源码在eclipse运行,重新编译,重新打包步骤文件 5.一个tomcat源码在eclipse上运行的java工程 作用: 1.用于学习tomcat源码和了解tomcat运行机制 2.学习... -
tomcat源码编译
2017-07-31 21:07:49可以直接运行的Tomcat源码编译项目 -
Tomcat源码
2015-08-09 11:36:56Tomcat源码,官方下载,可以使用,绝对没问题 ,请放心下载 -
tomcat源码.zip
2020-08-08 20:36:15作者将tomcat安装版的class文件逐个反编译并整合,最后打包还原成tomcat源码形式。非常适合tomcat初学者仔细钻研,读懂tomcat运行机制,从读懂源码开始。 -
tomcat源码解析
2019-01-20 17:22:41tomcat源码解析 -
tomcat源码包
2016-02-05 10:29:30tomcat的源码包 -
tomcat源码+文档pdf+源码解析
2019-02-19 16:59:30tomcat的源码解析资料,加上tomcat的pdf解析中文版的,tomcat的源码。 挺不错的资源,大家可以学习下。 -
IDEA版tomcat源码搭建.docx
2020-07-14 16:22:20IDEA版tomcat源码搭建 ,完全原创,希望对你有帮助 -
Tomcat源码阅读(一)使用Idea运行Tomcat6源码
2015-06-15 21:21:15Tomcat源码阅读(一)使用Idea运行Tomcat6源码 -
tomcat 源码导入eclipse
2019-04-08 01:15:09NULL 博文链接:https://naouguhtaeyeti.iteye.com/blog/1596775 -
Tomcat深入剖析+书籍源码+Tomcat源码
2018-02-28 09:30:42深入剖析Tomcat 书籍源码 Tomcat源码 Tomcat Tomcat Tomcat Tomcat -
「Tomcat源码剖析」.pdf
2020-06-01 23:10:55Tomcat源码剖析 : 整体架构 层层分析 源码解析 架构分析 (Http服务器功能:Socket通信(TCP/IP)、解析Http报文 Servlet容器功能:有很多Servlet(自带系统级Servlet+自定义Servlet),Servlet处理具体的业务逻辑... -
Tomcat源码所需要jar包
2017-06-28 20:52:12包含 ant.jar,jaxrpc,org.eclipse.jdt.core_3.9.2,wsdl4j-1.5.1 -
tomcat源码学习
2018-08-03 12:36:37tomcat源码学习,可以结合深入剖析tomcat来学习,感觉这本书挺好的,值得深入 -
Tomcat源码解析.pdf
2020-03-09 19:11:55Tomcat源码解析.pdf -
Tomcat源码学习:一个最简单的“Tomcat”
2019-08-06 01:11:20NULL 博文链接:https://pirate4444.iteye.com/blog/2076706 -
Tomcat源码研究.pdf
2018-09-01 14:38:02Tomcat源码研究.pdf。Catalina脚本解析,Tomcat启动遇到的常见问题,架构探讨,JMX在tomcat中的应用,容器初探,生命周期