什么是Tomcat?
开源的 Java Web 应用服务器,实现了 Java EE(Java Platform Enterprise Edition)的部 分技术规范,比如 Java Servlet、Java Server Page(JSP)、JSTL、Java WebSocket等。
Tomcat简单的说就是一个运行Java代码的Web应用服务器,底层是Socket的一个程序,它也是JSP和Servlet的一个容器。
其他
类似功能的还有:Jetty、Resin、Websphere、weblogic、JBoss、Glassfish、GonAS等:
上图对比了 Java EE 容器的实现情况,Tomcat 和 Jetty 都只提供了 Java Web 容器必需的 Servlet 和 JSP 规范,开发者要想实现其他的功能,需要自己依赖其他开源实现
可以看到Tomcat是最受欢迎的Java WEB应用服务器
为什么需要用到Tomcat?
如果你用(Html,css等)编写了一个页面,希望别人能够远程访问你写的页面,Tomcat就是提供能够让别人访问自己写的页面的一个程序。
Tomcat主要目录
/bin: 脚本存放目录(如启动、关闭脚本)。 *.sh 文件用于 Unix 系统; *.bat 文件用于 Windows 系统。
/conf: 配置文件目录。
/Catalina:用于存放每个虚拟机的Context配置
/context.xml:用于定义所有web应用均需要加载的Context配置,如果web定义了自己的context.xml将会被覆盖。
/catalina.properties:tomcat的环境变量的配置。
/catalina.policy:tomcat的安全策略配置。
/logging.properties:tomcat的日志配置文件,可以通过修改tomcat的日志等级级别和路径
/server.xml:tomcat的核心配置文件
/tomcat-uesrs.xml: 定义tomcat默认的用户以及角色映射信息配置。
/web.xml:tomcat中所有应用默认的部署描述文件,主要定义了Servlet和MIEME映射。
/lib:tomcat服务器所需要的各个库文件
/logs: 默认日志目录。
/webapps:web应用程序存放的目录,web项目保存到此目录即可发布。
/work:临时文件夹,生成所有的临时文件(*.java、*.class)
Web工程发布的目录结构
|-- myWebApp # 站点根目录
|-- META-INF # META-INF 目录
|--MANIFEST.MF # 配置清单文件
|-- WEB-INF # WEB-INF 目录
| |-- classes # class文件目录
| | |--*.class # 程序需要的class 文件
| |-- *.xml # 程序需要的xml 文件
| |-- lib # 库文件夹
| | |-- *.jar # 程序需要的jar 包
|-- web.xml # Web应用程序的部署描述文件
Tomcat运行原理分析
- Tomcat是运行在jvm的一个进程。它定义为【中间件】。顾名思义,是java项目与jvm之间的一个容器
- WEB项目的本质,是一大堆资源文件和方法。web项目没有main方法,意味着web项目不能自己运行起来。
- web项目部署进tomcat的webapp中的目的很明确,就是希望Tomcat去调用写好的方法为客户端返回需要的资源和数据。
- Tomcat可以运行起来,调用写好的方法,所以tomcat有main方法。
- 对于tomcat而言它并不知道我有什么方法,这些都是在我部署进webapp以后才会确定的,由此分析