Tomcat服务器的介绍以及配置、使用

来源:互联网 发布:利用单片机制作恒流源 编辑:程序博客网 时间:2024/05/22 15:31

           Tomcat是 Apache组织的 Jakarta 项目中的一个重要开源子项目,它是 Sun公司推荐的运行Servlet和 JSP的容器(引擎)。Tomcat还具有 Web服务器的基本功能,提供数据库连接池、SSL、Proxy等许多通用组件功能。Tomcat也可以作为独立的 Web服务器软件运行, 但它处理静态HTML 文件的速度比不上 Apache 和 IIS等专业的 web服务器,且其作为 web服务器软件的功能也不如 Apache和 IIS强大。我们这里只关注Tomcat作为运行Servlet的容器,负责接收和解析来之客户端的请求,同时把客户端的请求传送给相应的Servlet,并把Servlet的响应结果返回给客户。如下图所示:


 一、启动Tomact服务器

        下面看看怎么来使用它,我这里下载的是windows平台的压缩版apache-tomcat-7.0.42(附下载地址:http://download.csdn.net/detail/chuan3676/8541821 ),就是直接解压出来放到我们的硬盘上就可以使用了。但是这里要注意一些问题:不要把文件放到带中文或空格的路径下面,如:D:\专业课软件\apache-tomcat-7.0.42。解压出来,里面大致有这些内容:

 

其中,启动服务器是在bin文件夹下面的startup.bat。点击它,启动Tomcat。为了确保Tomcat服务器确实是在运行了,我们可以在浏览器地址栏上输入:http://localhost:8080/。如果能看到下面这个页面的话就是说明服务器在正常运行了。

 

           这里有些注意事项:

       1、Tomact是用java写的程序,那肯定也是要JVM才可以运行的,你的环境变量JAVA_HOME一定要事先配置好,这样启动的时候它才能去找到java。

      2、还有一个常见的错误是端口8080被占用了,这样的话先把占用8080端口的程序给找出来,然后可以把它停       了。可以下载个TcpView小工具,直接查看使用各端口号的应用程序,可以直接关闭进程。或者也可以直接打开CMD,用命令行来查看。先输入netstat –ano|findstr “8080”,这样就会显示端口被进程号为5348的进程号占用,然后继续输入tasklist|findstr “5348”,这样就显示出占用端口号的程序了,然后启动window任务管理器,找到java.exe这个进程,关了就行。如下图:


    3、另外还有一种可能错误就是Catalina_Home环境变量的设置,这个环境变量时来描述Tomcat的位置的,当你点击startup.bat启动Tomcat服务器的时候,会根据这个环境变量的路径去找到指定的Tomcat。所以,当你电脑上有几个Tomcat服务器分布在不同的磁盘位置的话,配置这个环境变量的时候就要小心了,因为虽然你表面上是启动不同的Tomcat,但是实际上都是在启动Catalina_Home环境变量指定路径的Tomcat。所以,当Tomcat在正常运行的时候,你的网站资源也在特定路径的情况下,通过浏览器访问就是访问不了的情况下,可以看看你是不是配置了Catalina_Home环境变量!(建议在平常开发过程中还是不要配置这个环境变量为好,毕竟有一天真的忘了这事的时候,麻烦还挺多的)

      把Tomact服务器设置为8080端口是开发阶段使用,如果真的是要部署Web网站的时候,要把它改回80端口,因为HTTP协议默认的就是80端口。(如果不改的话,那客户要访问你网站还得加上个端口号,如:http://www.baidu.com:8080/) 。那么怎么改成80端口呢?其实Tomact服务器的启动参数记录在配置文件——apache-tomcat-7.0.42\conf\server.xml,打开配置文件后,里面有一项<Connector ……../>,把port=”8080”改成port=”80”就行。(当然,很有可能你改了之后启动不成功,因为80端口已经被占用的概率很大)

 


二、Tomcat服务器目录结构

       经过以上是介绍和启动、运行Tomcat服务器,有了上面的初步认识,我们可以来深入Tomcat服务器目录结构,来分析都有哪些结构,都有什么特定的用途,平时我们开发过程中主要用到哪个目录结构,都要注意一些什么。打开Tomcat所在文件夹,可以看到里面主要有如图所示的几个文件夹。

 

下面来逐个看看各个文件夹分别有什么特点和用途。先来个整体大致的描述和概括,如果所示:

 

· bin      用于放置启动和关闭Tomcat的可执行文件和脚本执行文件。

· conf   用于放置Tomcat的配置文件,其中最重要的就是里面的server.xml文件,该文件描述了服务器启动各种参数。

· lib      用于放置支撑Tomcat服务器运行的各种jar包。 

· logs     用于放置Tomcat的日志记录文件,这个文件对我们平时开发排错也蛮有用的,因为当点击startup.bat启动Tomcat有报错的情况下,而且是一闪而过那种错误,这时候肯定看不到错误提示信息,那么可以来这里查看日记信息,有助于我们找到错误的原因。  

· temp     这个目录是Tomcat本身运行产生的临时文件,普通开发者不用管。

· webapps  Web应用程序的主要发布目录,这是所有目录里面对开发者而言,最值得关注的一个目录。

· work     Tomcat的工作目录, JSP文件翻译成的Servlet源文件和 class文件放量在这里 。

 

三、在Tomcat中配置虚拟目录

       WEB应用程序指供浏览器访问的程序,通常也简称为web应用。一个web应用由多个静态web资源和动态web资源组成,如:html、css、js文件、Jsp文件、java程序、支持jar包、配置文件等等…..,组成web应用的这些文件通常我们会使用一个目录组织,这个目录称之为web应用所在目录。Web应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚似目录的映射。

     那么这个过程是怎么实现呢?虚似目录的映射方式大致有三种方式:

1) 在server.xml文件的host元素中配置,例如:

 

Context表示一个Web应用(Context元素在配置文件中除用于映射虚似目录外,它还可用于为web应用配置一些资源,例如:配置web应用使用的数据库连接池,javamail session等)docBase目录是Web应用所在目录,而Path这个路径在磁盘上是没有的,叫虚拟路径。配置好了之后,映射关系也就完成了。这样在外界访问“/Test2“虚拟目录,就相当于在访问服务器上”D:\javaWeb“目录,这也是把Web应用程序提供给外界使用的过程。

 注意哦,这里是两个文件目录之间的配置,而不是某一个文件和一个文件目录的配置,例如下面的配置就是错误的。

 

       配置好了之后,要重启一次Tomcat服务器。重启服务器之后,在浏览器地址栏上输入http://localhost:8080/Test2/1.html,相当于是告诉浏览器去网络上找到主机名为localhost的主机,8080端口就是说名访问的这台主机上的Tomcat服务器。然而服务器上可能有很多Web应用,这里要访问的是虚拟目录为Test2的Web应用(根据映射关系,实际上就是服务器硬盘上D:\JavaWeb这个目录,这个目录才是真实的web应用所在目录)1.html就是web应用所在目录的资源文件。(PS:如果把Path的值设置为空字符串,即path=””,那么意味着把当前Web应用设置为默认Web应用,那你可以这样http://localhost:8080/1.html访问资源了)

 

但是,在实际开发过程中,很少用到这种映射方式,因为配置文件修改或更新都要重启服务器,我们都知道一个网站不可能随随便便说停就停。

   参考Tomcat文档(http://localhost:8080/docs/config/context.html ),我们也可以配置一个不用重启服务器的映射关系。 文档中有句话:It is NOT recommended to place <Context> elements directly in the server.xml file. This is because it makes modifying the Context configuration more invasive since the main conf/server.xml file cannot be reloaded without restarting Tomcat.

  意思是说不推荐我们把Context元素放在Server.xml文件中,因为Server.xml没有重启服务器是不能被重新加载的。那么Context应该配置在那个位置呢?这里总共有五种方式可以配置Context。

1) 接着往下看,有一句话:In the $CATALINA_BASE/conf/context.xml file: the Context element information will be loaded by all web applicati。

$CATALINA_BASE其实就是一个环境变量,指的就是Tomcat服务器的目录。这也就是说可以在Tomcat服务器目录下的conf文件夹下面新建一个context.xml,然后再这个文件里面配置Context。这种配置有一个特点,就是说这个Context配置的信息会被所有的Web应用所加载,也就是说这Context配置的信息为服务器上所有的Web应用所共享。


2) 继续往下看,是这么一句话:

In the $CATALINA_BASE/conf/[enginename]/[hostname]/context.xml.default file: the Context element information will be loaded by all web applications of that host.

这提示我们可以在Tomcat服务器目录下conf目录下的引擎目录下的主机目录下新建comtext.xml.default文件,这个文件中配置的Comtext信息也是为主机上所有服务器上所有的Web应用共享。

 

3) 继续往下看,是这么一句话:In individual files (with a ".xml" extension) in the $CATALINA_BASE/conf/[enginename]/[hostname]/ directory. 

     说只要我们在Tomcat服务器目录下conf目录下的引擎目录下的主机目录下新建一个文件以.xml为拓展名就行,也就是说在apache-tomcat-7.0.42\conf\Catalina\localhost目录下建个xml文件,然后就可以在这个xml文件中配Comtext

  以这种方式配置的Context有个特点:这个xml文件名(不包括拓展名)会被用做comtext path,就是用作虚拟目录供外界访问。这样的话,直接在xml文件中配置<Context docBase="E:\"/>就可以,没必要配置path属性,因为文件名已经用作虚拟目录了。

  用这种方式配置Comtext有一个好处就是不需要重启Tomcat服务器。

  这种配置方式还可以配置多级虚拟目录,例如这样命名foo#bar.xml文件,那么你就可以http://localhost:8080/foo/bar/1.html 这样去访问Web应用了。

  另外如果想配置缺省的Web应用可以用root.xml来定义,意思是说,如果你往地址栏输入http://localhost:8080/,没有指定某个Web应用的情况下,访问默认Web应用,而这个默认的Web应用所在目录就可以用root.xml来配置。做法就相当简单了,直接建一个root.xml,然后在里面和平常一样配Context,配置好了之后,这个映射关系会被用来作为默认的Web应用所在目录映射关系。(要重启Tomcat服务器才生效),这样你就可以不用指定Web应用所在目录对应的虚拟目录了。直接这样访问Web应用http://localhost:8080/1.html


4) 继续往下,还有一种配置方式:

In an individual file at /META-INF/context.xml inside the application files.


5) 最后一种配置方式就是我们一开始在con/server.xml里面配置context


总结一下,这五种配置Context的方式,其实是可以分为两类的。一类是为某个Web应用程序特别地单独配置的,还有一类是为所有服务器上Web应用配置共享的信息。


四、让Tomcat服务器自动管理虚似目录的映射

        tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚似目录。换句话说,tomcat服务器webapps目录中的web应用,外界可以直接访问。在实际开发工作中,可以把开发好的Web应用直接放入webapps目录下, 当tomcat服务器启动的时候,会自动把这些Web应用所在目录映射成虚拟目录,映射的虚拟目录名称就是当前Web应用目录(文件夹)名称,直接可以供外界访问。

例如在webapps目录下,放入一所在目录为Test的Web应用,里面有个1.html静态页面


那么直接通过http://localhost:8080/Test/1.html 来访问1.html资源文件就行了,根本不需要重启Tomcat,不需要配置Context,


这种方式很方便开发活动,但是前面上述的几种方式也是有必要了解一下,因为有一些场景可能会用到,例如开发好了程序,要部署到服务器上去,但是人家提供给你的空间是在C盘,而tomcat服务器在D盘,那么这时候就必须会配置路径,映射过去才行。

0 0