Tomcat--目录结构、源码配置运行

Tomcat目录结构

目录 目录下文件 说明
bin / 存放Tomcat的启动、停止等批处理脚本文件
startup.bat
startup.sh
用于在window和Linux下的启动脚本
shutdown.bat
shutdown.sh
用于在window和linux下的停止脚本
conf / 用于存放Tomcat的相关配置文件
Catalina 用于存储针对每个虚拟机的Context配置
context.xml 用于定义所有web应用均需加载的Context配置,如果web应用指定了自己的context.xml,该文件将被覆盖
catalina.properties Tomcat的环境变量配置
catalina.policy Tomcat运行的安全策略配置
logging.properties Tomcat的日志配置文件,可以通过该文件修改Tomca的日志级别及日志路径等
tomcat-users.xml 定义Tomcat默认的用户及角色信息配置
web.xml Tomcat中所有应用默认的部署描述文件,主要定义了基础Servlet和MIME映射
lib / Tomcat服务器的依赖包
logs / Tomcat的日志存放目录
webapps / Tomcat默认的Web应用部署目录
work / Web应用JSP代码生成和编译的临时目录

Tomcat的启动、停止和访问

启动:

双击 bin/startup.bat 文件

停止:

双击 bin/shutdown.bat文件

访问:

localhost:8080

Tomcat源码配置运行

  1. 下载对应版本源码包并解压
  2. 创建一个空项目
  3. 进入apache-tomcat-9.0.33-src文件夹,创建一个目录home,并将conf、webapps目录移入home目录中
  4. 在apache-tomcat-9.0.33-src文件夹下创建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>pers.zhang</groupId>
    <artifactId>Tomcat9.0</artifactId>
    <name>Tomcat9</name>
    <version>9.0</version>
 
    <build>
        <finalName>Tomcat9</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>2.3</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
 
    <dependencies>
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant</artifactId>
            <version>1.10.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant-apache-log4j</artifactId>
            <version>1.9.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant-commons-logging</artifactId>
            <version>1.9.5</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.rpc</groupId>
            <artifactId>javax.xml.rpc-api</artifactId>
            <version>1.1</version>
        </dependency>
        <dependency>
            <groupId>wsdl4j</groupId>
            <artifactId>wsdl4j</artifactId>
            <version>1.6.2</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jdt.core.compiler</groupId>
            <artifactId>ecj</artifactId>
            <version>4.6.1</version>
        </dependency>
 
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.easymock</groupId>
            <artifactId>easymock</artifactId>
            <version>3.5.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>
  1. 进入IDEA导入找到之前创建的目录,点击apache-tomcat-9.0.33-src目录下的pom.xml文件,进行导入

  2. 配置启动类:
    在这里插入图片描述

  3. 配置VM参数:

-Dcatalina.home=/Users/acton_zhang/J2EE/tomcat_source/apache-tomcat-9.0.33-src/home
-Dcatalina.base=/Users/acton_zhang/J2EE/tomcat_source/apache-tomcat-9.0.33-src/home
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=/Users/acton_zhang/J2EE/tomcat_source/apache-tomcat-9.0.33-src/home/conf/logging.properties

在这里插入图片描述

  1. 编译项目可能报错:
Error:(320, 45) java: 找不到符号
    符号: 变量 VERSION_9 、10、11、12
    位置: 类 org.eclipse.jdt.internal.compiler.impl.CompilerOptions

解决方案:统一将错误改为VERSION_1_8即可 (或者改为你项目的JDK版本 )

  1. 启动时控制台乱码

原因:一般是中文编码不匹配导致;经跟踪,发现是ResourceBundle读取org\apache\catalina\startup\LocalStrings_zh_CN.properties文件时没有用utf8解码导致;

解决方案:修改org.apache.tomcat.util.res.StringManager类中的getString函数:

在这里插入图片描述

  1. 访问页面,但是报错
    在这里插入图片描述

原因:是我们直接启动org.apache.catalina.startup.Bootstrap的时候没有加载JasperInitializer,从而无法编译JSP。

解决方案:在tomcat的源码ContextConfig中的configureStart函数中手动将JSP解析器初始化.

找到 java/org/apache/catalina/startup下 ContextConfig 这个类,在configureStart()方法的webConfig(); (代码775行)下面加上

context.addServletContainerInitializer(new JasperInitializer(), null);

在这里插入图片描述

  1. 再次访问,成功
    在这里插入图片描述
发布了861 篇原创文章 · 获赞 2275 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/cold___play/article/details/105093106
今日推荐