Tomcat配置文件server.xml中用于应用配置的部分:
<Server>
中的一个<Service>
节点对应一个连接,<Service>
节点中包含子标签<Connection>
用于配置Tomcat监听连接访问的端口
<Host>
标签中的appBase表示:要部署的项目资源应放在哪个路径下。appBase的值可以是相对路径或者绝对路径,但必须是Tomcat有权限能访问到的路径。
如果在一个Tomcat中部署多个应用,每个应用占用一个端口,那么可以在<Server>
中配置多个<Service>
节点,每个<Service>
节点表示一个应用,<Service>
节点中的<Connection>
标签用来配置该应用访问的端口。下图中,部署两个应用配置两个名分别为Catalina1和Catalina2的<Service>
节点,各自配置端口号,以及在同一个Tomcat容器下建立两个路径,分别为<Host>
标签中配置的两个appBase。
下图中<Context>
标签中的path参数表示url访问的路径,为空表示通过ip:port即可访问到docBase所指示路径下的资源。(因为appBase配置了项目资源路径是"webapps"表示访问url只能有权限访问到tomcat安装路径下的webapps路径下的项目资源)
因此,在同一个tomcat服务器下新增一个应用(占用不同端口访问),配置文件修改如下:
修改配置文件后,重启tomcat,访问ip:port/ttt能够访问到webapps2下的资源。
补充一个问题:假设现在要实现一个需求【在网站访问一个网站,实现点击下载服务器上的文件。】实现方式如下:写一个html网页,通过a标签指定要下载的文件的路径,实现下载功能。html页面实现如下:
但是却出现如下问题:实际上在服务器上/root/bbb/bbb.txt是存在的。问题就在于tomcat没有访问/root/bbb/bbb.txt的权限。① 可以为tomcat加上这个权限。② 可以把资源放到webapps2下(配置文件中配置的appBase的值),即项目的资源路径下。
tomcat能访问到的路径是<Host>
配置的appBase的值。html中下载路径的修改如下:
下载成功
另,如果不同应用可以允许通过同一个Tomcat监听的端口访问,可以在同一个<Service>
节点中增加<Context>
标签的配置,通过path属性配置访问路径,通过docBase属性配置资源路径(<Host>
标签的appBase属性配置的Tomcat有权限访问的路径)。