vlambda博客
学习文章列表

Tomcat的用途及作用

总结:

教材上说,Tomcat是Apache组织的Jakarta项目的一个重要子项目,它是Sun公司推荐的运行Servlet和JSP的容器。也就是说它是一个容器,但随处也可见“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>

虚拟目录的配置

  然后就是配置虚拟目录。例如想在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路径的设置对实验结果没有影响