2.2 Tomcat服务器

2.2.1 Tomcat的下载及安装

进入Tomcat官网进行下载,其安装文件有多种格式,其中ZIP文件是Windows系统下的压缩版本。本书下载的是Tomcat 8.5压缩版本。压缩包下载后,将之解压到一个无中文名称的目录下,如D:\apache-tomcat-8.5.37。解压后其文件结构如图2.1所示。

图2.1 Tomcat目录结构

其中的各个子文件夹说明如下。

•bin:存放启动和关闭Tomcat的脚本文件。

•conf:存放Tomcat服务器的各种配置文件。

•lib:存放Tomcat服务器的支撑JAR包。

•logs:存放Tomcat的日志文件。

•temp:存放Tomcat运行时产生的临时文件。

•webapps:存放各种Web应用。

•work:Tomcat的工作目录。

启动Tomcat前,先要确定计算机是否安装有JDK,笔者的计算机安装了JDK 1.8,还要配置如下环境变量。

•JAVA_HOME:其值设置为JDK的主目录,如C:\Program Files\Java\jdk1.8.0_181。

•CATALINA_HOME:其值设置为Tomcat的主目录,如D:\apache-tomcat-8.5.37。

然后进入Tomcat主目录下的bin子目录,找到其中的startup.bat文件,双击运行文件,等待片刻,若命令窗口出现如下信息,则表示启动完毕。

Server startup in 5012 ms 

打开浏览器,输入地址http://localhost:8080,若出现图2.2所示的页面,则表示Tomcat安装与启动成功。

【注意】8080是Tomcat默认的端口,但有时候可能会被占用,这时可以修改Tomcat端口号以解决此冲突。

打开Tomcat主目录下的conf子目录,找到server.xml文件,可看到如下内容。

<Connector port="8080" protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           redirectPort="8443" /> 

修改其中的8080为其他值,如改为8090,重启Tomcat,这时测试Tomcat的URL就变成了http://localhost:8090。如果双击startup.bat文件后仅闪烁一下就再无反应,则需要配置环境变量JAVA_HOME,设置其值为JDK的安装路径。

图2.2 Tomcat的启动页面

2.2.2 Tomcat服务器中项目的部署

典型的编译好的Java Web应用项目的目录组织结构如图2.3所示。

图2.3 Java Web的目录组织结构

图2.4所示是一个用IDEA开发工具创建的Java Web项目,项目名称为uname,其目录结构就符合图2.3的要求。

在IDEA中,一个名为uname的项目编译完成后,接下来只需要把这个项目复制到Tomcat所在的webapps文件夹下即可,如图2.5所示。接着回到Tomcat文件夹,找到bin文件夹下的startup.bat文件并打开文件(注意:startup.bat文件运行成功后不能关闭,如果关闭了就相当于把Tomcat服务器关闭了)。之后打开浏览器输入http://localhost:8080/uname/,就能对这个文件夹里面的资源进行访问了。

图2.4实际项目的目录结构

图2.5 webapps文件夹

2.2.3 Tomcat虚拟目录映射

一个Java Web项目开发并编译好后,只需要把这个项目复制到Tomcat安装目录下的webapps子目录,启动Tomcat后即可供客户端浏览器访问。但如果不想复制项目过去,可以做成虚拟目录映射,即把项目实际目录映射为可供浏览器访问的目录。例如,项目的真实目录为d:/uname,如果不想把它复制到webapps下,但又希望通过http://localhost:8080/uname/能访问到,可以打开Tomcat文件夹conf目录下的server.xml文件,找到<Host>标签,在<Host>与</Host>之间添加下述语句。

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

其中参数说明如下。

•docBase:代表应用的真实路径。

•path:代表网络访问的虚拟目录名,表示将docBase指定的真实目录映射为path指定的虚拟目录,配置完成后重启Tomcat即可实现。这样开发好的项目就不需要每次都复制到Tomcat安装目录下的webapps子目录中了。

2.2.4 web.xml文件简介

通过Java Web项目下的web.xml文件可以初始化配置信息,例如,welcome页面、servlet、servlet-mapping、filter、listener、启动加载级别等。

本节应主要掌握:通过配置web.xml文件,将Web应用中的某个Web资源配置为网站首页;将Servlet程序映射到某个URL地址上(下面学习Servlet时会讲到)。

下面来了解web.xml文件中的常用标签及掌握如何配置默认首页。

(1)XML文档有效性检查标签

<span style="font-family:Times New Roman; "> 
<!DOCTYPE web−app PUBLIC 
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app\_2\_3.dtd" > 
</span> 

这段代码主要是为了指定文档类型定义(Document Type Definition,DTD),通过它可以检查XML文档的有效性。下面显示的<!DOCTYPE>有几个特性,这些特性主要用于描述关于DTD的信息。

①web-app定义了该文档(部署描述符,不是DTD文件)的根元素。

②PUBLIC意味着DTD文件可以被公开使用。

③“-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN”意味着DTD由Sun Microsystems, Inc.维护。该信息也表示它描述的文档类型是DTD Web Application 2.3,而且DTD是用英文书写的。

④URL“http://java.sun.com/dtd/web-app_2_3.dtd”表示DTD文件的位置。

(2)<web-app></web-app>标签

部署描述符的根元素是web-app。DTD文件规定web-app元素的子元素的语法如下。

<span style="font-family:Times New Roman; "> 
<!ELEMENT web−app (icon?, display−name?, description?, distributable?, context−param*, filter*, filter−mapping*, listener*, servlet*, servlet−mapping*, session−config?, mime−mapping*, welcome− file−list?, error−page*, taglib*, resource−env−ref*, resource−ref*, security−constraint*, login− config?, security−role*, env−entry*, ejb−ref*, ejb−local−ref*) > 
</span> 

web-app元素中含有23个子元素,且这些子元素都是可选的。问号(?)表示子元素是可选的,而且只能出现一次;星号(*)表示子元素可在部署描述符中出现0次或多次。有些子元素还可以有它们自己的子元素。web.xml文件中web-app元素声明的是下面每个子元素的声明。

(3)<distributable/>标签

<distributable/>可以使用distributable元素“告诉”Servlet/JSP容器,Web容器中部署的应用程序适合在分布式环境下运行。

(4)<context-param></context-param>标签

<context-param> 
<param-value>business.root</param-value> 
</context-param> 
<!- - spring config - -> 
<context-param> 
<param-name>contextConfigLocation</param-name> 
<param-value>/WEB-INF/spring-configuration/*.xml</param-value>
</context-param> 

(5)配置默认首页

举例:在web.xml的<web-app></web-app>标签内添加如下内容。

<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
  </welcome-file-list> 

上述配置表示将index.html设置为默认主页,若找不到则设置下一个资源(index.htm)为默认主页,依此类推,若都找不到会报错。若设置index.html为默认主页,浏览器访问时,其URL不需要有index.html也能访问到该页面。例如,完整的URL是http://localhost:8080/demo/index.html,简化后的URL是http://localhost:8080/demo/,同样能访问到主页index.html。

【注意】web.xml文件必须放在WebContent\WEB-INF目录下。