Tomcat作为Servlet/JSP容器(服务器)挺不错的,开源免费,需要知道的是Tomcat是一个Web服务器,其符合Servlet/JSP规范,但是却没有实现所有JavaEE规范,所以我们还是应该规范说法,称Tomcat为一个JavaWeb服务器,而不是JavaEE服务器
我们使用IDE部署JavaWeb项目基本上都是一键完成,这是IDE给我们该来的好处,但是还是有必要了解一下部署项目的细节
要将JavaWeb应用部署到Tomcat,需要显式或隐式定定义一个Tomcat上下文。在Tomcat中,每一个Tomcat上下文都表示一个Web应用程序。所以我们也将分为隐式和显式两种方式来进行总结
显式部署
显式部署总的来说就是以目录结构的方式部署,不打包,只要项目根目录(Maven为webapp 普通项目为webRoot/webContent)有WEB-INF(WEB-INF下有classes,jar包,配置文件),有静态资源(HTML,CSS,JS ,图片等)即可。再通过一个在Tomcat中的配置文件来将我们的程序发布出来。
显式部署有两种方式:
- 在Tomcat的conf/Catalina/localhost目录下创建一个XML文件
- 在Tomcat的conf/server.xml文件中添加一个Context元素
方式一
如果决定给每一个上下文都创建一个XML文件(第一种方式),那么这文件名就很重要了,因为上下文路径就是从这个文件名的衍生得到的。例如,将一个Demo1.xml文件放在conf/Catalina/localhost目录下,那么这个应用程序的上下文路径就是Demo1,访问的URL就为:http://localhost:8080/Demo1
这个上下文文件只有一行代码:
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="d:/Demo1" reloadable="true"></Context>
这里的docBase是必须的属性,它定义了应用程序的位置。reloadable属性是可选的,如果存在并且值为true,那么一旦程序中Java类文件或者是其他资源文件有任何添加,减少或者是更新,Tomcat都可以检测到,并且重新加载该应用程序
当把上下文文件添加到Tomcat的指定目录下,Tomcat就会自动加载应用程序。当删除这个文件时,Tomcat就会自动卸载应用程序(Eclipse和Idea都是利用这种方式部署项目的,所以去Tomcat部署目录中是找不到项目根目录及资源文件的,这些文件存在于IDE项目的工作空间中)
方式二
在conf/server.xml文件中的Host标签下添加一个Context元素
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> <Context path="/Demo2" docBase="d:/Demo1" reloadable="true"></Context> </Host>
以第一种方式不同之处在于此处定义上下文需要给上下文路径定义path属性,这个path属性的值表示需要访问的项目名,访问的URL就为:http://localhost:8080/Demo2
一般来说,不建议通过server.xml来管理上下文,因为修改了Tomcat配置文件。不过,如果有多个应用程序需要测试,使用这种方式或许更为方便,因为可以在一个文件中同时管理所有的应用程序
隐式部署
方式三
隐式部署真是太方便了,非常建议使用这种方式部署项目。通过将一个war文件或者整个应用程序复制到Tomcat的webapps(Tomcat默认的部署项目位置,可以在server.xml文件中修改,但不建议修改)目录下,启动服务器之后就会解压这个war,解压到部署项目位置。(MyEclipse就是将项目根目录部署到Tomcat中,所以会在Tomcat中找到项目根目录及资源文件)
原文地址:https://www.cnblogs.com/lz2017/p/7147115.html