第一个,当我们明明成功的启动了Tomcat浏览器,但是却访问任何的路径或者资源都是显示404无法找到
这个问题比较难找问题点,因为我们在控制台看日志的时候并没有明显的报错,并且我们的文件路径也是没有任何问题的,就像是下面这样:
我们在控制台可能只会看到这样的描述,然后我们继续看到我们的文件目录:
看到一切正常,尤其是我用红色框框住的地方,这个地方的web框架看起来是没有问题,但是这里恰恰就是问题所在,我们继续打开项目结构去看更详细的地方:
项目结构看起来也非常的没问题,我们也觉得没有问题,所以我们就直接打开浏览器,访问我们的服务器地址,但是这样却访问不到任何的资源:
无论是你访问自己写的控制器的路径还是说访问一个jsp页面,全部都访问不到,这个问题就很玄学,我也不知道原理是什么,但是这么做就可以解决:
把web文件夹的名字改成webapp
就这么简单,别的什么都不用动,我们只需要将web框架文件夹的名字改一下就可以了,我们现在来修改一下:
只是修改了这个文件夹的名字,但是别的什么都没有改,然后我们继续访问服务器的地址:
这次就很顺利地访问到文件了,具体的原因是什么我就不知道了。
思路:
我们组要留心注意下控制台的访问,当我们访问成功的时候,我们的控制台会打印一个东西:
万红丛中一点白,这个白色的东西就是显示加载我们的DispatcherServlet,也就是我们的前端控制器,这是我们运行成功的时候才会打印出来的,而我们之前失败的原因就是因为前端控制器没有加载进来,所以导致我们的请求都没有正确的接收,而我们的前端控制器是配置在web.xml中的,这个文件存在于我们的web框架中,所以我们就可以考虑是不是web框架的问题导致文件没有加载
而文件没有正常加载无非就是路径错了或者是文件内容错了,所以我们首先去看路径,但是这里就比较难受了,因为表面看起来一点错都没有,无论是文件的编写还是路径的选择都是一点错都没有,后来我不知道为什么就想改一下文件夹的名字,后来改成webapp之后就可以了,就很神奇
至于原理是什么,我也不清楚,但是改完就好了,这个大概是IDEA的坑吧。
第二个问题就是我们运行成功之后报的另一个错:空指针异常
如果我们在访问jsp页面的时候报了一个奇怪的错,全称叫:HTTP Status 500 - java.lang.NullPointerException
在控制台中的报错是这样:严重: Servlet.service() for servlet [jsp] in context with path [] threw exception [java.lang.NullPointerException] with root cause
java.lang.NullPointerException
界面长这样:
这个报错会出现在我们服务器正常启动之后,我们在访问jsp文件的时候会出来,这个报错的原因是因为我们在pom中导入的jsp依赖和Tomcat中的jsp依赖冲突导致的,所以我们需要在pom中的jsp坐标下面添加一个控制作用域的配置:
还有一个,就是当我们的servlet包和Tomcat中的serlet包冲突的时候,会报另外的一个错,叫子容器无法启动,洋文长这样:
这个会导致服务器直接无法启动,原因也是一样的,我们需要在servlet坐标下面配置一个控制作用域的配置:
可喜可贺,可喜可贺