目录
3. Tomcat具有传统的Web服务器的功能:处理Html页面
【写在前面】
此文并非原创。是学习了这两篇文章之后的一个读书笔记。
如果想深入学习,可直接阅读原博文:
tomcat到底是干嘛的 - Cherishforchen - 博客园 (cnblogs.com)
Tomcat学习笔记(史上最全tomcat学习笔记) - 小白教程 (voidme.com)
1. 什么是Tomcat
(1)Tomcat是一种web服务器,也称作运行在服务器(物理意义上的计算机)上的一种软件包。用来对服务器上的HTML文档提供访问权限控制。
(2)用来装载javaweb程序,可称它为web容器。JSP/Servlet程序需要运行在web容器上,web容器有很多种,JBoss、WebLogic等等,Tomcat是其中一种。
(3)万维网本质上就是“超文本文档”(HTML文档)组成的一个通过超级链接互相访问的交互网络。你从甲计算机上的文档A,通过超链接访问乙计算机上的文档B,而B必须放在web服务器(Tomcat)里才能被访问。
(4)Tomcat是Apache 软件基金会的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他公司及个人共同开发而成。Tomcat 服务器是一个免费的开源web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
(5)Tomcat是Apache 服务器的扩展,但它是独立运行的。所以当运行tomcat时,它实际上作为一个与Apache 独立的进程单独运行。诀窍是,当配置正确时,Apache为HTML页面服务,而Tomcat 实际上是运行JSP页面和Servlet。
2. Tomcat中的应用程序是WAR包
(1)WAR文件,即 WebArchive 文件。
(2)WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。
这个包中的文件按一定的目录结构来组织:
通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录很重要。
通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。
通常这些所依赖的类也可以打包成JAR放到WEB-INF下的lib目录下,也可以放到系统的CLASSPATH中,但那样移植和管理起来不方便。
3. Tomcat具有传统的Web服务器的功能:处理Html页面
Tomcat不仅是一个Servlet容器,同时也具有传统的Web服务器的功能:处理Html页面
3.1 Web基础
(1)C/S :客户端与服务器,即用户需要安装相应的客户端才能运行,典型的如QQ,微信。
优点:减轻服务端的处理压力,运算速度快,对客户端响应快
缺点:版本升级成本高,每次升级必须先卸载老版本再升级
(2)B/S:浏览器与服务器,本质上来说也是CS架构,只不过client变成了browser而已。
优点:不存在客户端升级问题,只需要升级服务端程序即可。
缺点:具体业务的处理压力全部加载到服务端,导致服务端程序运算速度降低,响应速度降低,用户体验差。
3.2 Web的三大协议和四大角色
4. Tomat的下载,运行环境和配置,启动和访问
tomcat是绿色软件,解压即可使用,无需安装。具体操作,等之后演示再附图。
5. Tomcat项目结构
(1)项目文件所在目录直接放项目资源文件。
(2)WEB-INF的/classes中存放servlet编译好的字节码文件。
(3)web.xml是配置文件,定义请求url和所访问的内容与Servlet间的映射关系,可指定欢迎页面等。
(4)lib中存放使用的依赖jar包。
6. 手工创建和打包第一个web工程
(1)准备好自己的web工程。
(2)将整个项目文件放在tomcat的webapps目录下。
(3)启动tomcat服务器,通过浏览器正常访问。
(4)将webapps中项目删除,控制台中进入项目目录
(5)输入命令:jar -cvf d:\xxx\xxx.war .
其中:
cvg是命令参数,表示生成一个文档、显示生成过程、指定生成的文件名.
xxx为打包后要存放的路径和打包后的文件名,根据自己需求修改.
注意,最后需输入一个空格再加一个'.'代表打包该目录下所有文件。
7. Tomcat核心结构图
(1)Tomcat的核心配置都在conf\server.xml文件中,核心结构图如下:
(2)解析所包含的各个部分
一个server服务器可以有多个service服务。
每个service服务都是由engine引擎提供的。
每个engine引擎中可以有多台主机或者虚拟主机,如localhost和virtual host。
localhost中又可以包含多个context应用。
engine引擎通过connector连接器使得浏览器可以访问服务器。
(3)解析配置文件conf\server.xml
1)关于服务service,可以看到name为Catalina,包含有多个connector。
第一个端口为8080,协议是HTTP/1.1,20000ms的延迟。
重定向端口为8443,uri编码为utf-8,即我们常说的通过浏览器访问http://localhost:8080。
当8080端口被占用时,可以在此修改端口(注意,当应用上线时,必须将端口号改为80,因为浏览器发出的HTTP请求的默认端口为80端口);
第二个connector较为简单,就不分析了。
2)这个server服务器里有一个engine引擎,name为Catalina,默认端口就是localhost。
3)重要!!!可以看到,
engine里面有一个host主机,name为localhost。
appBase为webapps,这里也就说明了为什么通常要把项目文件放在webapps中。
unpackWARs为true,这个属性的意思是自动解压war包。
autoDeploy为true,代表着当开启tomcat服务器时,项目就会自动部署上线。
在这里可以根据实际生产需求去改变它。
8. 创建虚拟目录
待更新
9. 创建虚拟主机
待更新
10. ManagerApp
待更新
11. 小结
(1)tomcat是一个中间件,在B/S架构中,浏览器发出的http请求经过tomcat中间件,转发到最终的目的服务器上,响应消息再通过tomcat返回给浏览器。
(2)tomcat所做的事情主要有:开启监听端口来监听用户的请求,解析用户发来的http请求,然后访问到用户指定的应用系统,最后返回的页面经过tomcat返回给用户。
(3)web应用放到tomcat里面才能跑得起来,而tomcat里面对项目有规定特定的格式,就是war包的格式,这就是为什么我们需要把项目打成war才能放进去。