【Tomcat 8.0】两种方法配置servlet虚拟目录

首先声明,我的Tomcat是8.0版本,其他版本的没试过,仅供参考。以下是两种配置方法:

方法一:配置conf文件夹下的server.xml文件(不推荐)

  • 进入Tomcat根目录的conf文件夹,打开server.xml,即打开D:\Program Files\apache-tomcat-8.0.45\conf\server.xml,
  • <Host></Host>标签内添一个<Context>标签,即:
    <Context path="/虚拟目录名" docBase="项目的真实路径"/>
    比如,我希望通过访问http://loacalhost:8088/upLoad就能访问我的servlet,那我的虚拟目录名就是upLoad,而我的web应用存放在本地的D:\eclipse\workplace\UserLoadServlet\WebContent路径下,那么我的Context内容便是:
    <Context path="/upLoad" docBase="D:\eclipse\workplace\UserLoadServlet\WebContent"/>
  • OK

方法二:配置conf\Catalina\localhost下的xml文件(推荐)

  • 在D:\Program Files\apache-tomcat-8.0.45\conf\Catalina\localhost路径下新建一个xml文件,该xml文件名必须与你的虚拟目录名一致(如upLoad.xml)
  • 打开upLoad.xml,输入:
    <Context path="/upLoad" docBase="D:\eclipse\workplace\UserLoadServlet\WebContent"> </Context>
  • OK

还有一个极其重要的问题

从上面的叙述可以看出,docBase里面填的是项目的真实路径,那么我的这个项目名明明是UserLoadServlet,为什么要填到它的下一级目录WebContent呢?因为WEB-INF文件夹必须是“项目”的一级子目录。如图所示:
【Tomcat 8.0】两种方法配置servlet虚拟目录
上图中的Dynamic Web Project项目结构是用Eclipse创建时自动生成的,为了方便,便将项目路径设置为WebContent,而不是UserLoadServlet。
问题来了!!!
既然项目目录为WebContent,那么该项目的所有资源,必须要能在该目录下找到。
通常,一些jsp、html资源我们会放在该目录下。但是,对于java文件编译而成的class文件,Eclipse默认是放在图中build文件夹下的classes文件夹下的,而build文件夹并不在WebContent目录下,因此我们需要:
修改class文件的路径
右键项目名UserLoadServlet→Properties→Java Build Path→修改资源路径(如下图红框所示)→点击OK
【Tomcat 8.0】两种方法配置servlet虚拟目录