欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Tomcat的用途

程序员文章站 2022-06-28 18:25:30
...

总结:

这篇文章主要反思了Tomcat的作用。本文主要是自己的一个思考过程,不是严谨地介绍和详细总结Tomcat使用方法的文章。最后尝试利用tomcat的知识,以URL的形式来访问文件夹(在浏览器的地址栏直接黏贴文件的路径也可以访问,但是这里可以不用实际的路径进行访问)。该例子实用意义不大,主要是加深对tomcat的理解。

教材上说,Tomcat是Apache组织的Jakarta项目的一个重要子项目,它是Sun公司推荐的运行Servlet和JSP的容器。也就是说它是一个容器,但随处也可见“Tomcat服务器”的说法。

事实上,Tomcat即是容器也是服务器。不过本文主要涉及Tomcat发挥容器功能的部分。Tomcat是用Java语言编写的,需要运行在Java虚拟机上,所以一般需要先安装JDK,以提供运行环境。

上面说过Tomcat是一个容器,但为什么开发出来的应用需要装进Tomcat这个容器呢。忽略各个文件之间的跳转,web应用本质只是一个装有很多资源(java/html/jsp/js/css等各种格式文件)的文件夹。假如我们有一个web应用projectA,我们在某台计算机A把这些文件写好后,就希望其他设备能够通过一些方式来访问我们的资源。一种方法是通过在浏览器地址栏输入URL来实现资源的访问。

那么从我们在计算机A上写好某个文件夹到文件夹能够被其他计算机所访问,需要什么呢。首先需要我们的互联网。计算机B先通过互联网找到计算机A。

而这样做的前提是你这个电脑必须在互联网这个网络里面,这样别人才能访问到你。也就是说一台电脑必须要有IP地址才能称为服务器。但这样也只是找到了IP地址而已,我们还需要找到对应的主机(注:一般主机是指一台电脑,但在tomcat中,虚拟主机指的是计算机中的某个文件夹)。但就算找到了计算机A,我们怎么知道要去哪里寻找web应用projectA呢。Tomcat容器就是来解决这个问题的。在我看来,Tomcat的一个重要的功能就在于“映射”(通过配置文件实现)。


虚拟主机名的配置

首先确定一个虚拟的主机名。Tomcat默认使用localhost作为虚拟主机名,并映射到webapps文件夹。在Tomcat安装目录下的server.xml文件夹的内容如下所示:

<Host appBase= "webapps" autoDeploy="true" name="localhost" unpackWARs="True">

如果也想要同时能够访问计算机A中的不同路径下的文件,这时候就可以添加一个<Host>元素,把这个新的路径添加进去,然后给它起一个虚拟的主机名字(关于虚拟主机名和路径的配置,因为是根据虚拟目录来指定要访问的路径,如果虚拟目录的路径是绝对路径,那么这里的路径没有意义,但是如果采用相对路径的方式,那么这里的路径就有意义。而虚拟的主机名除了在这里进行设置外,还需要在hosts中进行设置,并且需要在catalina文件夹下新建一个同名的文件夹,虚拟目录可以在这里进行配置,这些内容会在下面具体展开)。

<Engine name="Catalina" defaultHost = "localhost">
  ...
<Host name= "newhost" appBase="d:\newhost">
  ...
</Host>
</Engine>

(注:还需要到Windows系统中hosts进行注册,这样ip地址才能映射到这个虚拟主机)


虚拟目录的配置

然后就是配置虚拟目录。例如想在url为localhost/chapter01时跳转到特定的目录下。就需要在<Tomcat安装目录>\conf\Catalina\localhost目录下新建一个chapter01.xml(命名任意)。输入:

<Context path="/chapter01" docBase="d:\chapter01">

也就是说,从表面上来看,url中的localhost/chapter01貌似是指向localhost下面的chapter01文件夹,但其实上并非如此,这两者仍然要分开进行指定。并且不一定存在父子文件夹的关系。除此以外,还可以指定默认页面(例如指定welcome.html)。打开<Tomcat根目录>\conf目录下的web.xml文件。这时候需要在chapter01目录中创建WEB-INF目录,并在该目录下创建一个web.xml文件。配置方法如下:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app ...>   
           <welcome-file-list>
                <welcome-file>welcome.html</welcome-file>
        </welcome-file-list>
     </web-app>

(也可以在<Tomcat安装目录>/conf目录下的server.xml文件进行配置,但是需要进行重启后才生效)

而tomcat的管理平台又起到什么作用呢。它列出了所有的web应用及其状态。并且提供每个web的启动、停止和卸载的功能。这意味着它可以选择电脑中哪部分资源有效,哪部分资源无效。那么这样来看的话,其实tomcat就像酒店前台,给你门卡让你去找到对应的房间(web资源),并且决定哪些房间不能进,哪些可以进去

然后执行了startup.bat启动Tomcat。启动后其实就是把这些映射**了。关闭后就相当于酒店前台走了,来访者(URL请求)不知如何是好。网上有人说启动了tomcat后,CATALINA_PATH & CATALINA_BASE will refer to the resource location.也就是说知道去哪里找我们的资源了。如果仔细看上面虚拟主机的配置内容,就会发现<Host>元素是放在<Engine>元素里面的。而Engine的name就是Catalina。一旦启动tomcat,就表明我们的配置能够生效。文件夹projectA就不是简单的一个文件夹了,而是变成了一个可以通过URL访问得到的一个文件夹。按照这种思路的话,我们其实可以自己定义一些路径(下文给出一个例子)。

所以tomcat像是一个桥梁,外界访问服务器(某台计算机)资源的时候,tomcat能够找到对应的文件夹。所以当我们访问localhost://index.html,他就知道去这台电脑的哪个位置寻找资源index.html。当然,tomcat也有它力所难及的地方,例如编写有组织的web应用就不是它的强项了。这也是我们后面要不停地用Eclipse等进行整合开发的原因。

一个简单的案例(用URL请求访问本地文件夹中的视频)

假如我有视频放在文件夹(E:\jpvideo)中,其中有一个文件名为1.mp4,如果我想通过URL(例如:video/jpvideo/1.mp4)来访问电脑上的这个文件夹的资源。那么要怎么做呢。方法如下:
a、首先来到tomcat安装目录下,找到server.xml。添加一个名为“video”的虚拟主机。

  <Host appBase="e:\" name="video">
  </Host>

b、然后更改了hosts文件:(添加如下代码)

127.0.0.1   video

c、配置虚拟目录,方法是在<Tomcat安装目录>\conf\Catalina下面新建一个video文件夹,在video文件夹下面新建一个xml文件(名字任意),输入如下内容。

<Context path = "/jpvideo" docBase="E:\jpvideo"/>
  • 注:由于此处使用的是绝对路径,所以Host的appBase路径的设置对实验结果没有影响

d、最后通过cmd输入startup.bat来启动tomcat,**这些配置。

e、(验证)在地址栏中输入video/jpvideo/1.mp4,结果如下,可以直接打开视频并播放。

Tomcat的用途

相关标签: 应用程序 TomCat