方式一
如果决定给每一个上下文都创建一个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中找到项目根目录及资源文件)
在不去修改Tomcat参数,如reloadable的情况下
1.如果在Tomcat运行中修改了jsp等资源文件后,不需要重新也能生效,如果是class文件则需要重启。
2.如果只是修改解压后的文件夹里面的class文件,没有修改war包里面的文件,重新运行Tomcat不会覆盖修改的class文件。
3.如果在Tomcat运行中删除war包,则会同时删除war解压的目录
4.如果修改java文件后生成的war包覆盖Tomcat的war包后,重新运行Tomcat会删除原来解压war生成的文件夹,在重新解压新的war包