Eclipse是开发过程的IDE,假如你和我一样,使用Eclipse开发一个java语言中的maven的web项目,在开发过程中肯定会对项目进行调试。
调试的方法,就是在Eclipse上启动操作系统中安装好的tomcat,然后让自己的web项目run on server,也就是让自己的项目在eclipse的tomcat上运行,看看效果。
这个时候,也就是调试的时候,eclipse和tomcat是什么关系呢?
简单描述,eclipse使用tomcat。
操作系统上安装的tomcat如下图所示:
但是,当你通过eclipse运行tomcat的时候,你使用的tomcat并不是它,你的项目也没有运行在这个webapps目录下。
为什么呢?因为,你在eclipse上配置好的tomcat,写着呢:
上图写的很清楚,eclipse中配置的tomcat这个server,所在的位置(Server Location) 位于workspace下的.metadata.pluginsorg.eclipse.wst.server.coretmp0这个server path,这个路径。这个路径才是eclipse中你用到的tomcat服务器的路径。
你所发布的项目,实际上是在上述路径下 wtpwebapps这个deploy path中,也就是名为wtpwebapps这个目录下。
如果你还是有点不明白,让我们回顾一下eclipse中配置tomcat的过程
上述步骤后,你就将操作系统上的tomcat配置到了eclipse上。
双击你的server也就是tomcat你就能看到tomcat的属性
然后,自然而然的,我们肯定想要启动tomcat,看看效果:
你惊奇的发现,哇,这一切都是为什么???
明明看上去tomcat已经运行起来了,却看不到可爱的小狮子画面呢?
小狮子画面原本应该是这样的:
注意到,上图是我先关闭eclipse中的tomcat然后去cmd中startup,然后打开浏览器访问tomcat默认首页的效果。
这就怪了,我们的tomcat明明是可以运行的,但是为什么通过eclipse使用tomcat就无法访问这个最初的页面呢?
相信明白了server path 和 deploy path这两个概念以后,你应该能想到,原因是,你的eclipse的server path中没有ROOT这个目录以及目录中的jsp页面,所以当然看不到喽
上图实际上只能体现出一个大意,如果你仔细看看这两个tomcat的配置文件,同时结合tomcat中host站点 context应用等概念,一起想一想。你会发现你刚刚试图在eclipse中的浏览器访问的http://localhost:6054/ 的ROOT目录和你使用操作系统访问的http://localhost:6054/ 的ROOT目录,根本就是两个地方,让我们看看这两个不同的tomcat下同名的“应用”有什么区别
看到了吧
当你在eclipse中使用浏览器访问看到404画面,误以为eclipse中的tomcat没有启动的时候,其实,你错了。
eclipse中tomcat是否启动取决于console中有没有报错,和server中显示的tomcat的状态
你之所以看到404画面,完全是因为eclipse使用的tomcat对应的wtpwebapps目录中的ROOT应用,里面没有内容,完全是空的。
下面,我们将这些内容复制到eclipse中tomcat的对应目录:
然后我们去eclipse中重新启动tomcat
小狮子出现了。
因此对于开发和调试的过程,我们必须要掌握tomcat的结构,容器的概念,pipeline-value的概念和,配置方法的概念,这些都是基本功,掌握了这些以后才能够快速判断出,自己的代码是否真的出现了问题。