大家都知道tomcat在接收到一个http请求的时候,会按照
Connector
Engine
Host
Context
.......
.......
.......
host会在context中寻找path为webapp的应用,如果找不到就交给默认的context去处理。而docBase是我们web应用的物理路径。
安装目录/server/conf/Catalina/你的host下的所有xml文件,若这些xml文件中定义了context,tomcat
也会把它视为一个web应用来加载,所以当你想在tomcat中发布一个web应用时,就有以下两种方法:
如果你不幸同时对一个web应用做到了以上两点,那么按任何一种方法都可以访问。
下面介绍一下Context子节点:这相当于配置一个虚拟路径,其中docBase属性指定项目的实际物理存储位置,并映射为上面所述的appbase目录下的一个文件,文件名由path指定。
reloadable:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用。
在开发阶段将reloadable属性设为true,有助于调试servlet和其它的class文件,但这样用加重服务器运行负荷,建议在Web应用的发存阶段将reloadable设为false。
给个例子详细解释一下:
<Context path="/x" docBase="D:/myeclipse/workspace/struts2/WebRoot" reloadable="true"/>
项目实际存储在D:/myeclipse/workspace/struts2/WebRoot下,由解释器虚拟在appbase目录下x文件夹,这样的话就可以通过如下方式进行访问:
http://localhost:8080/x/index.jsp
如果index.jsp在WebRoot文件夹下的一个子文件夹(如aa)里,则就应该通过以下方式进行访问
http://localhost:8080/x/aa/index.jsp
另外docBase指定文件夹的位置时尽量避免使用中文名作为文件名,据说这样可以会导致错误