打开配置文件 server.xml
添加上自己的站点,localhost已经被默认使用了。这里暂时不改它而是添加一个新的站点。
新站点 127.0.0.1
<Host name="127.0.0.1" appBase="D:\website\app1">
<Context path="/a1"/>
</Host>
如果这么写:
发现没有页面可以打开
这么写可以打开:
http://127.0.0.1:8080/index1.html
打印结果:
我在根目录我的路径是D:\website\app1
也可以打开:
打印:
我是子目录,我的真实路径是D:\website\app1\app1
这么写
<Host name="127.0.0.1">
<Context path="/a1" docBase="D:\website\app1"/>
</Host>
http://127.0.0.1:8080/a1/index1.html
打印结果:
我在根目录我的路径是D:\website\app1
http://127.0.0.1:8080/a1/app1/
打印结果:
http://127.0.0.1:8080/a1/app1/
但是打不开:http://127.0.0.1:8080/index1.html
分析:没有配置appBase,path="/a1" docBase="D:\website\app1"这个path路径倒成了打开根目录的路径。也就是说Context(环境)配置根目录路径。
如果这里path="/",那么就能打开:http://127.0.0.1:8080/index1.html ,这种情况是在没有配置appBase的情况。
如果配置appBase="D:\website\app1"
这么配置:
<Host name="127.0.0.1" appBase="D:\website\app1">
<Context path="/a1" docBase="D:\website\app1\app1"/>
</Host>
http://127.0.0.1:8080/a1/index.html
打印:我是子目录,我的真实路径是D:\website\app1\app1
但是打不开:http://127.0.0.1:8080/index1.html ,为什么会打不开,因为现在D:\website\app1不再是个应用,而只是包含应用的一个文件夹,这个文件夹本身不是应用,他里面包含的那些文件夹才是应用。
也就是这么理解:
appBase="D:\website\app1"本身是包含应用的文件夹。
path="/a1" docBase="D:\website\app1\app1" 这个才是真正的应用,它是被包含的。它的路径可以和appBase一样,如果这样那么包含应用的文件夹也是一个应用了。
比如:
<Host name="127.0.0.1" appBase="D:\website\app1">
<Context path="/a1" docBase="D:\website\app1"/>
</Host>
这样包含应用的文件夹也成了一个应用。
http://127.0.0.1:8080/a1/index1.html
打印:我在根目录我的路径是D:\website\app1 因为配置了个path="a1", 这个相当于别名,虚拟的真实不存在的,但是配置了就必须加上,不然打不开。
appBase="D:\website\app1":包含应用的路径。
path="/a1" docBase="D:\website\app1":docBase应用的路径,path应用的虚拟路径,或者叫路径别名。
docBase配置成包含应用的路径,那么包含应用的路径也是一个应用了。
就这么写很妥当,不要别名路径了:
<Host name="127.0.0.1" appBase="D:\website\app1">
<Context path="/" docBase="D:\website\app1"/>
</Host>
host主机(域名)的意思
太绕了:appBase基于应用,配置应用,包含应用的路径,docBase基于文档,包含它的是应用。
也许需要这么理解,应用其实也是个路径,包含那些应用
点击bin目录里面的serverUp.bat启动tomcat,看到下图表示启动成功。