struts2学习二:Tomcat的部署目录和访问路径问题
1:idea中配置tomcat后,那么最终的web工程发布到哪里去了?为什么在访问路径中不加工程名就可以访问?
1.1:因为tomcat有段时间没接触了,先回顾下tomcat的目录结构吧?
如图所示:各级文件的主要保存内容是:
- bin:主要是tomcat的一些命令。环境变量、内存修改什么的; conf:这个很重要,存放了tomcat的配置文件。
- server.xml(端口,加载目录等),web.xml,context.xml等;
- Catalina目录:可设置默认加载目录
- lib:tomcat的依赖jar包;
- logs:日志
- temp:临时文件;
- webapps:应用目录
- ROOT:默认工程(比如地址栏没有工程名时,默认Root下工程);
- 其他工程;
- work:运行时生成的文件,通过webapps生成,最终运行的文件都在这里,删除无影响。
1.2:我们知道,MyEclipse是直接将工程copy到tomcat的webapps目录中,在将tomcat运行起来,通过工程名访问该工程。所以我们可以在webapps中找到对应的工程文件。但是idea不是这么干的,webapps下面是没有你要发布的工程文件的。
1.3:idea安装时的默认缓存文件夹放在c盘中,我们在idea中启动一个web项目,在server栏中可以定位到该工程的具体,比如这里我是:
我的工程名字是:struts2_smallcase,我们打开catalina_base目录:
这三个文件是idea在发布web项目到tomcat时,从项目配置的tomcat地址copy过来的,里面内容完全一致。向上一级:
发现,我们用idea跑过的工程都在 C:\Users\Administrator\.IntelliJIdea2017.3\system\tomcat 中,采用tomcat名_工程名的形式;
到此,我们已经了解到,idea是为每一个发布的project,将tomcat的配置文件复制到idea缓存文件的工程缓存中去。可是为什么访问不需要工程名?
因为每个project都有独立的tomcat配置副本,所以有理由怀疑,idea将当前project设置成默认的访问工程了,事实上我们进入 Tomcat_9_0_0_M22_struts2_smalecase\conf\Catalina\localhost ,发现了里面的ROOT.xml文件,因为tomcat可以通过在conf/Catalina下新建***.xml文件设置默认加载目录,我们打开ROOT.xml,果然:
虚拟目录的映射关系很清楚了!空白路径上的访问都指向了docBase。
1.4:idea的tomcat配置 Application context 与访问路径:
默认情况下,是“/”,此时可以通过: http://localhost:8080/ 访问到index页面,但是修改到: http://localhost:8080/struts2_smalecase/ 是访问不到的;
如果改成上图形式:那么 http://localhost:8080/ 不能访问,而 http://localhost:8080/struts2_smalecase/ 是可以正常访问的。
因此,我怀疑是:无论 Application context 怎么配置,都是通过 http://localhost:8080/Application context 路径访问该工程,只是地址栏上带不带工程名的问题了。
2:主要是用来熟悉一下struts2的struts.xml的配置和相关的逻辑:
ref:http://www.cnblogs.com/compassblog/p/8454543.html
--End--