目录:
- Tomcat
- Tomcat简介
- 如何下载tomcat
- Tomcat工作原理
- Tomcat架构图
- Tomcat组件
- Server组件
- Service组件
- Connector组件
- Engine组件
- Host组件
- Context组件
- 配置虚拟主机(Host)
- 配置Context
Tomcat
Tomcat简介
Tomcat服务器是Apache的一个开源免费的Web容器。它实现了JavaEE平台下部分技术规范,属于轻量级应用服务器。
如何下载tomcat
可以访问我写的这盘博客👉如何下载和配置Tomcat–看这篇文章就懂了
Tomcat工作原理
Tomcat是一个能够处理请求并产生响应的应用程序。Tomcat实现了JavaEE平台下的一些技术规范,所以我们可以在Tomcat中运行我们所编写的Servlet、JSP。
客户端基于网络协议发送请求给Tomcat的web服务器 ,tomcat监听端口 ,web服务器解析请求选择需要的请求信息发送给容器找到要使用的脚本 , 脚本操作数据库返回只给java,java在对返回的结果进行封装后,返回web服务器,最后服务器返回给客户端
Tomcat架构图
conf/server.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN"><Service name="Catalina"><!-- 连接器监听端口是 8080,默认通讯协议是 HTTP/1.1 --><Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><!-- 名字为 Catalina 的引擎,其默认的虚拟主机是 localhost --><Engine name="Catalina" defaultHost="localhost"><!-- 名字为 localhost 的虚拟主机,其目录是 webapps--><Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"></Host></Engine></Service>
</Server>
Tomcat组件
Server组件
启动一个server实例(即一个JVM进程),它监听在8005端口以接收shutdown命令。Server的定义不能使用同一个端口,这意味着如果在同一个物理机上启动了多个Server实例,必须配置它们使用不同的端口。
为什么是JVM进程?
因为tomcat就是一个java编写的程序,tomcat运行时,就相当于一个java主类的启动,所以是JVM进程
<Server port="8005" shutdown="SHUTDOWN">
port: 接收shutdown指令的端口,默认为8005;
shutdown:发往此Server用于实现关闭tomcat实例的命令字符串,默认为SHUTDOWN;
Service组件
Service主要用于关联一个引擎和与此引擎相关的连接器,每个连接器通过一个特定的端口和协议接收请求并将其转发至关联的引擎进行处理。困此,Service要包含一个引擎、一个或多个连接器。
<Service name="Catalina">
name:此服务的名称,默认为Catalina;
Connector组件
支持处理不同请求的组件,一个引擎可以有一个或多个连接器,以适应多种请求方式。默认只开启了处理Http协议的连接器。如果需要使用其他协议,需要在Tomcat中配置该协议的连接器。
支持处理不同请求的组件,一个引擎可以有一个或多个连接器,以适应多种请求方式。默认只开启了处理Http协议的连接器。如果需要使用其他协议,需要在Tomcat中配置该协议的连接器。
在Tomcat中连接器类型通常有4种:
- HTTP连接器
- SSL连接器
- AJP 1.3连接器
- proxy连接器
<Connector port="8888" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />
port:监听的端口
protocol:连接器使用的协议,默认为HTTP/1.1;
connectionTimeout:等待客户端发送请求的超时时间,单位为毫秒;
redirectPort:如果某连接器支持的协议是HTTP,当接收客户端发来的HTTPS请求时,则转发至此属性定义的端口;
maxThreads:支持的最大并发连接数,默认为200个;
Engine组件
Engine是Servlet处理器的一个实例,即servlet引擎,定义在server.xml中的Service标签中。Engine需要defaultHost属性来为其定义一个接收所有发往非明确定义虚拟主机的请求的Host组件。
<Engine name="Catalina" defaultHost="localhost">
name:Engine组件的名称;
defaultHost:Tomcat支持基于FQDN(Fully Qualified Domain Name 全限定域名)的虚拟主机,这些虚拟主机可以通过在Engine容器中定义多个不同的Host组件来实现;但如果此引擎的连接器收到一个发往非明确定义虚拟主机的请求时则需要将此请求发往一个默认的虚拟主机进行处理,因此,在Engine中定义的多个虚拟主机的主机名称中至少要有一个跟defaultHost定义的主机名称同名;
Host组件
虚拟主机
虚拟主机(英语:virtual hosting)或称共享主机(shared web hosting),又称虚拟服务器,是一种在单一主机或主机群上,实现多网域服务的方法,可以运行多个网站或服务的技术。
Host组件位于Engine容器中用于接收请求并进行相应处理的虚拟主机。通过该容器可以运行Servlet或者JSP来处理请求。
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
name:虚拟主机的名称,Tomcat通过在请求URL中的域名与name中的值匹配,用于查找能够处理该请求的虚拟主机。如果未找到则交给在Engine中defaultHost指定的主机处理;
appBase:此Host的webapps目录,即指定存放web应用程序的目录的路径;
autoDeploy:在Tomcat处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy;默认为true;
unpackWARs:在启用此webapps时是否对WAR格式的归档文件先进行展开;默认为true;
Context组件
Context是Host的子组件,代表指定一个Web应用,它运行在某个指定的虚拟主机(Host)上;每个Web应用都是一个WAR文件,或文件的目录。
<Context path="/test" docBase="D:\bjsxt\itbaizhan.war" />
path:context path既浏览器访问项目的访问路径。
docBase:相应的Web应用程序的存放位置;也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径;
配置虚拟主机(Host)
因为我的tomcat端口改成了8081所以tomcat监听的tomcat端口为8081
webapps1/a/index.html
根据这个结构创建目录
index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>ZBXMX </TITLE><META NAME="Generator" CONTENT="EditPlus"><META NAME="Author" CONTENT=""><META NAME="Keywords" CONTENT=""><META NAME="Description" CONTENT=""></HEAD><BODY>Welcome toZBDX</BODY>
</HTML>
**修改 conf目录下的server.xml的host标签 **
<Host name="localhost" appBase="webapps1"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t "%r" %s %b" /></Host>
注意:
建议注释掉原来的host标签或者删掉 否则启动tomcat时 有startup.bat有可能发生闪退
运行tomcat后 访 http://localhost:8081/a/index.html
如何通过访问http://zbdx:8081/a/index.html
首先继续修改host
修改成为如图 将name属性值修改一下即可
继续访问你会发现无法访问成功
这个时候需要进行域名绑定
修改C:\Windows\System32\drivers\etc\hosts文件
大部分的电脑都是这个
在最后一行添加
即可访问成功
配置Context
context的作用就是可以让tomcat运行其他目录下的项目
创建index.html页面。
index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>ZBXMX </TITLE><meta charset="UTF-8"><META NAME="Generator" CONTENT="EditPlus"><META NAME="Author" CONTENT=""><META NAME="Keywords" CONTENT=""><META NAME="Description" CONTENT=""></HEAD><BODY>Welcome to jjy最帅 zlw最美 啊哈哈哈</BODY>
</HTML>
将index.html资源部署到d盘的demo目录中。
通过zbdx:8081/zbdx/index.html访问虚拟主机,并访问index.html。
在host标签里添加
<Context path="/zbdx" docBase="d:/demo"/>
然后访问http://zbdx:8081/zbdx/index.html
如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!