一、构建Tomcat源码环境
工欲善其事必先利其器,为了学好Tomcat源码,我们需要先在本地构建一个Tomcat的运行环境。
1.源码环境下载
源码有两种下载方式:
1.1 官网下载
1.2 GitHub下载
当然你也可以通过GitHub来拉取源代码
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源码之旅了!!!