Tomcat |
Tomcat简介
(1)Tomcat仅仅实现了JavaEE规范中与Servlet、JSP相关的类库,是JavaEE的不完整实现。但是项目中仅为了使用Servlet与JSP,Tomcat也足够使用
(2)Tomcat4.x发布时,内建了Catalina(Servlet容器)和Jasper(JSP engine)等
- Jasper是转换工具:将JSP代码转化为Servlet代码
(3)Tomcat的配置文件是XML格式的
(4)jar包:JAR(Java ARchive,Java 归档),其本质是zip格式的压缩包,可以通过改名解压。jar包通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便开发Java平台应用软件或库。
(5)Tomcat官网:https://tomcat.apache.org/
Tomcat安装
(1)yum安装 centos7.6的yum源的Tomcat版本为Tomcat7.0(一般也不会使用yum安装)
# yum install tomcat tomcat-admin-webapps tomcat-webapps
(2)一般去Tomcat官网下载Tomcat安装包
[root@centos7-17 ~]# ll
-rw-r--r-- 1 root root 9711748 Jun 20 23:54 apache-tomcat-8.5.42.tar.gz
-rw-r--r-- 1 root root 10267082 Nov 20 20:13 apache-tomcat-8.5.47.tar.gz
[root@centos7-17 ~]# tar xf apache-tomcat-8.5.47.tar.gz -C /usr/local/
[root@centos7-17 ~]# cd /usr/local/
[root@centos7-17 local]# ln -s apache-tomcat-8.5.47/ tomcat
#将二进制程序加入环境变量
[root@centos7-17 tomcat]# echo 'PATH=/usr/local/tomcat/bin/:$PATH' > /etc/profile.d/tomcat.sh
[root@centos7-17 tomcat]# . /etc/profile.d/tomcat.sh
#建立tomcat用户启动Tomcat
[root@centos7-17 tomcat]# groupadd -g 1010 tomcat
[root@centos7-17 tomcat]# useradd tomcat -u 1010 -r
[root@centos7-17 tomcat]# id tomcat
uid=1010(tomcat) gid=1010(tomcat) groups=1010(tomcat)
#修改/usr/local/tomcat/的属主属组
[root@centos7-17 tomcat]# chown -R tomcat.tomcat /usr/local/tomcat/
#启动Tomcat
[root@centos7-17 tomcat]# su - tomcat -c "/usr/local/tomcat/bin/catalina.sh start"
- 注:部署Tomcat程序时可能需要设置Tomcat进程的用户,也可能不设置,后续实验将直接使用root用户启动Tomcat。
(3)Tomcat启动之后:
Tomcat安装后:
(1)目录结构:
目录 | 说明 |
---|---|
bin | 可执行程序目录(Tomcat的启动、停止) |
lib | 库目录 (.jar文件) |
conf | 配置文件 |
logs | 日志文件目录 |
webapps | 应用程序,应用部署目录 |
work | jsp编译后的结果文件 .class or .java(Servlet) |
(2)配置文件:https://blog.csdn.net/wdirdo/article/details/103178352
Tomcat内部组成
(1)组件分类:
- 顶级组件:server、代表整个Tomcat容器
- 服务类组件:service,组织engine和connector,里面只能包含一个engine
- 连接器组件:connector,有HTTPS、HTTP、AJP协议的连接器。注:AJP(Apache Jserv Protocol)是一种基于TCP的二进制通讯协议。
- 容器类:engine、host、context都是容器类组件,可以嵌入其他组件,内部配置如何运行应用程序
- 内嵌类:可以内嵌到其他组件内,value、logger、realm、loader、manager等,eg:logger可以在不同容器组内定义
- 集群类组件:listen、cluster
(2)内部组成图示:
(3)内部组成说明:
名称 | 说明 |
---|---|
server | Tomcat运行的进程实例 |
connector | 负责客户端的HTTP、HTTPS、AJP等协议的连接。一个connector只属于一个engine |
**service | 用来组织engine和connector的关系** |
engine | 响应并处理用户请求,一个引擎上可以绑定多个connector |
host | 虚拟主机 |
context | 应用的上下文,配置路径映射path==>directory |
注意:
-
一般一台主机上启一个Tomcat,一个Tomcat也只配置一个service
-
engine的响应过程:engine下面配置着许多的虚拟主机,当请求到达时,engine匹配虚拟主机的path路径,如果没有匹配则缺省虚拟主机处理用户请求。
(4)配置文件:<只列出部分组件项>
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN"> #server 代表整个Tomcat容器
<Service name="Catalina"> #service 一般配置一个,则service name相当于标识
<Connector port="8080" protocol="HTTP/1.1" #connector 指明监听的端口和协议:http 8080、https 8443、AJP 8009
<Connector port="8009" protocol="AJP/1.3".../>
<Engine name="Catalina" defaultHost="localhost">#engine的缺省虚拟主机配置 engine下面还可配置其他虚拟主机
<Host name="localhost" appBase="webapps"
<Valve className="o..." directory="logs" #虚拟主机内部可以配置上下文、
</Host>
</Engine>
</Service>
</Server>
Tomcat应用部署 |
(1)webapps/ROOT/目录就是网站的默认根目录
- 访问的URL:http://192.168.38.17:8080
(2)部署manager/时与ROOT同级目录,但是访问的URL:http://192.168.38.17:8080/manager
[root@centos7-17 tomcat]# ls webapps/manager/
images/
index.jsp
META-INF/ #类似于WEB-INF
status.xsd
WEB-INF/ #webapp的应用的配置存放路径目录,存放web.xml和context.xml
xform.xsl
(3)JSP WebAPP目录结构
- 主页配置:一般指定为index.jsp或者index.html
- WEB-INF/ #webapp的应用的配置存放路径目录,存放web.xml和context.xml
- META-INF/ #类似于WEB-INF
- classes/ #类文件,当前webapp需要的类
- lib/ #当前webapp依赖的jar包
(4)webapps的全局配置:web.xml
[root@centos7-17 tomcat]# vim conf/web.xml
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
-
说明默认页面的加载顺序:index.html > index.htm > index.jsp
-
只是想说明:web.xml对全局的webapps做了默认配置
-
注:修改上述默认页面的加载顺序不需要重启Tomcat,修改配置文件之后需不需要重启还是看修改之后先测试Tomcat能否对配置文件生效吧~~不用重启尽量别重启Tomcat。
(5)webapp归档格式
- .war:webapp打包
- .jar:EJB类打包
- .rar:资源适配器类打包
- .ear:企业级webapp打包
(6)部署deploy
- 注:反部署undeploy:停止webapp的运行,并此JVM上清除已经加载的类,**从Tomcat应用目录中移除部署的文件。**反部署会将部署的文件从磁盘删除,慎重!