Tomcat是Apache基金会(http://www.apache.org/)开发的一个 Servlet 容器,由Apache、Sun和其他一些公司及个人共同开发而成,实现了对Servlet和JSP的支持,并提供了作为Web服务器的一些特有功能。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。Tomcat包含了一个配置管理工具,可以通过编辑XML格式的配置文件来进行配置。目前最新版本是10.0。
Tomcat 6.0 支持Servlet 2.5,JSP 2.1
Tomcat 7.0 支持Servlet 3.0,JSP 2.2
Tomcat 8.0 支持Servlet 3.1,JSP 2.3
Tomcat 9.0 支持Servlet 4.0,JSP 2.4
Tomcat 10.0 支持Servlet 5.0,JSP 3.0
下载地址:http://tomcat.apache.org/
下载Tomcat时,这里提供了压缩版和安装版,还区分32位和64位系统版。大家可以下载压缩版,直接解压使用。
解压后,如下图所示
(1)添加环境变量CATALINA_HOME,值为Tomcat的安装路径。例如:D:\server\apache-tomcat-8.5.13
(2)修改环境变量Path,增加“%CATALINA_HOME%\bin”
以上两步为环境变量的配置,以前的版本都需要配置环境变量。
不过Tomcat7.0后都不需要配置了(不论是解压版,还是安装版都不需要配置环境变量了),用EditPlus打开bin目录下的startup.bat,可以看到如下原因 if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome,意思是bin目录下存在catalina.bat文件就可以访问Tomcat页面了,代表着安装成功了。
我们来运行测试一下,到Tomcat的安装路径的bin文件夹下,双击运行startup.bat。
打开IE浏览器,地址栏里输入http://localhost:8080/,见到如下界面说明Tomcat启动成功。
关闭Tomcat的方法,不能简单的关闭Tomcat窗口,而是需要执行shutdown.bat命令。
首次登录Tomcat管理平台,并不知道用户名和密码,因此,单击取消按钮,此时,浏览器会跳转到另一个页面。
根据提示信息,要访问管理平台,需要在conf\tomcat-users.xml文件中,添加具有管理权限的账号。
在<tomcat-users>节点内增加 <user username="admin" password="1234" roles="manager-gui"/> ,如下图所示。
Tomcat定义了4个不同的角色:
① manager-gui:允许访问HTML图形管理控制台与状态页面。
② manager-script:允许访问文本接口和状态页面。
③ manager-jmx:允许访问JMX代理和状态页面。
④ manager-status:只允许访问状态页面。
再次重启Tomcat,点击“manager webapp”,在弹出窗口上输入正确的用户名和密码。即可进入“Tomcat Web Application Manager”界面。
这样你的Tomacat就配置好了。
这部分会有几个很重要的xml文件和目录,大家要记好,区分好!!!
Tomcat默认的服务端口是8080,我们可以通过Tomcat的配置文件对其进行修改。前面讲过Tomcat安装目录中有一个conf文件夹是用于存放各种配置文件的,其中server.xml文件就是Tomcat主要的配置文件,端口号就是在这个文件中配置的。
(1)进入Tomcat安装目录,编辑文件“安装目录\conf\server.xml”(用记事本工具打开)
(2)在server.xml找到以下代码:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
(3)修改代码中的port="8080",可以将"8080"修改为"8081"。最大到65535。
(4)修改后,为了是新配置的端口生效,还需要重启Tomcat服务器。
(1)复制到Tomcat目录中
我们将之前编写的静态Web页面部署到Tomcat中看看。之前的hello.html代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>标题</title> <meta charset="UTF-8"> </head> <body> 这是我的第1个HTML页面 </body> </html>
将hello.html拷贝至Tomcat安装目录下的\webapps\ROOT\目录下,打开浏览器,输入http://服务器IP地址:8080/hello.html,就可以看到之前制作的HTML。
(2)在server.xml中配置虚拟目录
但是我们不能把以后开发的所有页面文件都拷贝到\webapps\ROOT\目录下,这样会很混乱。那我们怎么办呢?
我们可以通过在server.xml中配置虚拟目录来实现Web页面的部署。
在<Host>元素中,添加一个<Context>元素,具体代码如下:
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> <Context path="/chapter02" docBase="D:\project_javaweb\Chapter02\"/> </Host>
重启Tomcat,打开浏览器,输入http://服务器IP地址:8080/chapter02/hello.html,可以看到HTML网页。
<Context>元素的属性:
(3)在自定义xml文件中配置虚拟目录
在实际开发中,如果经常在server.xml文件中配置虚拟目录会有一个弊端,就是每次修改server.xml文件后,想要使文件生效,必须重启Tomcat服务器。我们可以采用另外一种配置虚拟目录的方式,在自定义的xml文件中配置虚拟目录。
首先,进入Tomcat安装目录下的\conf\Catalina\localhost目录
在该目录中,创建一个名为chapter02.xml的配置文件,文件名任意,文件类型必须是xml文件,这个xml文件名将作为网址中的虚拟目录名,一般来说要和<Context>中的path属性值一致(此时path属性值已失去意义)。
然后,将server.xml文件中配置好的<Context>元素(只能有一个<Context>元素),复制到该文件中。
<Context path="/chapter02" docBase="D:\project_javaweb\Chapter02\"/>
重新启动Tomcat服务器,这次重启Tomcat服务器,是因为修改了server.xml文件(在<Host>元素中删除了之前添加的那个<Context>元素),让之前的配置失效。
打开浏览器,输入http://服务器IP地址:8080/chapter02/hello.html,可以看到HTML网页。说明,使用自定义的xml文件,也可以配置虚拟目录。
另外,在自定义的xml文件中,不仅可以配置虚拟目录,还可以配置默认的Web应用。
配置方式很简单,只需要将chapter02.xml文件重命名为ROOT.xml即可。
不需要启动Tomcat服务器,在浏览器中输入http://服务器IP地址:8080/hello.html,也可以打开网页。你会发现,自定义xml文件中<Context>元素中的path属性好像没有什么作用,虚拟路径取决于自定义的xml文件名,但是建议大家为了阅读代码方便,还是在<Context>元素中保留path属性,并且让它和xml文件同名。
(4)配置Web应用的默认页面
当访问一个Web应用时,通常需要指定访问的资源名称,如果没有指定资源名称,则会访问默认的页面。
例如,在访问网易体育的新闻页面时,需要输入http://sports.163.com/index.html,有的时候,希望只输入http://sports.163.com/就可以访问网易体育新闻页面。
实现这样的需求,只需要修改WEB-INF目录下的web.xml文件的配置即可。
首先,查看Tomcat服务器安装目录下\conf目录下的web.xml文件的配置,打开Tomcat安装目录\conf目录下的web.xml文件,用鼠标将滚动条拖到最下端。
代码如下:
<welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
上述代码,<welcom-file-list>元素,用于配置默认页面列表,它包含多个<welcome-file>子元素,每个<welcome-file>子元素,都可以指定一个页面文件。
当用户访问Web应用时,如果没有指定具体要访问的页面资源,Tomcat会按照<welcome-file-list>元素,指定默认页面的顺序,依次查找这些默认页面,如果找到,将其返回给用户,并停止查找后面的默认页面,如果没有找到,则返回访问资源不存在的错误提示页面。
我们可以直接在\conf目录下的web.xml文件的<welcom-file-list>元素中增加一个<welcome-file>子元素,代码如下:
<welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>hello.html</welcome-file> </welcome-file-list>
我们重启Tomcat服务器,再在地址栏里输入http://服务器IP地址:8080/chapter02,就可以查看页面了。这样hello.html就是默认页面了。
但是这样还是需要每次重启Tomcat服务器。
我们还可以自己像之前一样配置自定义xml文件。
我们在D:\project_17javaweb\Chapter02应用程序目录中创建WEB-INF目录,并在此目录下,创建一个web.xml文件,将hello.html设置为默认页面。
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <welcome-file-list> <welcome-file>hello.html</welcome-file> </welcome-file-list> </web-app>
在地址栏里输入http://服务器IP地址:8080/chapter02,也能打开我们的默认页面hello.html了。
Tomcat服务器允许用户在同一台计算机上,配置多个Web站点,在这种情况下,需要为每个Web站点,配置不同的主机名,即配置虚拟主机。现实生活中,为了提高硬件资源的利用率,有很多网站通过配置虚拟主机的方式,实现服务器的共享。
在Tomcat服务器中,配置虚拟主机,需要使用<Host>元素,打开Tomcat安装目录下,conf文件夹中的server.xml文件,发现有如下所示的代码:
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> </Host>
<Host>元素,表示一个虚拟主机,它的属性name表示虚拟主机的名称,属性appBase表示虚拟主机的路径。这里的虚拟主机名称为localhost,路径为Tomcat安装目录下的webapps目录。
如果希望添加一个虚拟主机,只需要在server.xml的<Engine>元素中,增加一个<Host>元素,我们可以在这个<Host>元素中配置虚拟目录<Context>,重启Tomcat服务器。
在conf\Catalina\目录下会多一个主机名的目录,我们也可以在这里自定义xml配置文件。
比如,将D:\project_javaweb\Chapter02目录,配置成一个名为sdbi的虚拟主机。
<Engine defaultHost="localhost" name="Catalina"> <Host appBase="webapps" autoDeploy="true" name="sdbi" unpackWARs="true"> <Context path="/chapter02" docBase="D:\project_javaweb\Chapter02"/> </Host> …… </Engine>
配置好的虚拟主机,想要被外界访问,还必须在DNS(Domain Name System,域名系统服务器)或Windows系统中注册,因为,通过浏览器访问一个URL地址时,需要明确该主机对应的IP地址,由这个IP去连接Web服务器,所以,当虚拟主机配置完成后,还需要在hosts文件中,配置虚拟主机与IP地址的映射关系。通常情况下,hosts文件位于操作系统根目录下,一般在C:\Windows\system32\drivers\etc目录中。
打开hosts文件,发现如下所示的一行文本:
127.0.0.1 localhost
这行文本的作用,就是建立IP地址,127.0.0.1本机与主机名localhost直接的映射关系,这是,在IE浏览器地址栏中,可以直接使用localhost访问本地Web服务器的原因。如果,要增加更多的主机名,与IP地址的映射关系,只需要在这个hosts文件中,进行配置即可。
例如将D:\project_javaweb\Chapter02目录,配置成一个名为sdbi的虚拟主机,配置如下:
127.0.0.1 sdbi
打开Eclipse,单击“Window”菜单,选择下方的“Preferences”,看是否存在“Server”选项。如果没有Server选项,则需要安装Server插件。
点击“Add”的添加按钮,弹出“New Server Runtime Environment”对话框,选择对应的Tomcat版本,点击Next,选择Tomcat的路径,以及JRE(也可使用工作平台默认的),点击“Finish”,完成配置。再点击“OK”按钮,完成Tomcat运行时环境配置。
我们切换到JavaEE视图,选择下方控制台的Servers选项卡,点击“No servers are available. Click this link to create a new server…”链接。如果控制台中没有Servers选项卡,我们可以打开Window菜单 à Show View选项 à Servers命令。
根据情况自己定义主机名和服务器名称。点击“Next”进入下一个页面。
由于我们目前还没有发布Web应用程序,所以这个页面我们直接点击“Finish”按钮完成即可。
这时在我们的Servers选项卡中就会出现刚刚配置的Tomcat服务器。
我们双击,即可进入配置页面
在这上面点右键,选择“Start”即可运行Tomcat服务器。
看到如下信息,说明Tomcat启动完成。
我们打开浏览器,输入网址http://localhost:8080/
出现404错误,请按下图修改Tomcat配置。
解释:
Use workspace metadata (does not modify Tomcat installation)。
Use Tomcat installation (takes control of Tomcat Installation)。
第一个选项表示使用当前workspace的metadata路径,它一般会将输出文件保存至workspace目录下;第二个表示输出文件保存至Tomcat安装目录下。
Deploy Path:表示发布项目的目录:改为webapps。
在Eclipse中创建一个项目名为HelloTomcat的项目,过程如下:
菜单栏File > New > Dynamic Web Project(动态Web项目),出现新建向导。
Target runtime选择之前配置好的Apache Tomcat v7.0,点击Next。
单击Finish,完成项目的创建,可以在Eclipse平台左侧的资源管理器中看到如下的项目结构。
在WebContent节点上点击右键,选择New à JSP File,弹出New JSP File对话框。在File name输入框中输入文件名index.jsp。其他采用默认值。点击Next按钮,打开选择JSP模板的对话框。采用默认值,点击Finish按钮,完成JSP文件创建。
此时,在资源管理器的WebContent节点下,会自动创建一个名称为index.jsp的文件。
在index.jsp文件中编写如下代码。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>第一个JavaWeb应用</title> </head> <body> <center>你好,Tomcat</center> </body> </html>
将编辑好的文件保存。
在默认情况下,Eclipse自建的JSP文件采用的是ISO-8859-1编码,不支持中文,为了让Eclipse自动创建的文件支持中文,我们可以选择Eclips菜单的Windows à Preferences打开首选项,在左侧Web节点下的JSP Files子节点,Encoding选择“ISO 10646/Unicode(UTF-8)”选项。
在项目名上点右键,选择Run as à Run on server,选中Always use this server when running this proje选项,将服务器设置为默认值。
我们选择了Run on server后,Eclipse会将我们编译好的项目自动复制部署到Tomcat安装目录下的webapps下,并且会将WebContent文件夹重命名为项目名称。因为我们在之前的Eclipse中配置好了Tomcat服务器。
我们可以设置使用IE浏览器为默认浏览器,浏览