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--

posted @ 2018-05-14 22:51  一碗雪花  阅读(839)  评论(0编辑  收藏  举报