本文请在你的代码没有报错、代码无逻辑错误,各环境安装搭建好的基础上浏览…仅供参考
-----------------时间急没耐心的朋友可以直接跳到后面的代码段部分-------------------
最近在idea中用maven写springmvc项目时发现总是报错404,对于很多像我一样的小白来说真的是个坑。最后终于在一位大佬的文章里面找到解决方法
参考链接:link
给大家分享一下我的解决思路:
其实404报错的意思就是找不到你的目标文件,所以出现这种错误时要很仔细的检查你的.xml文件、代码、Module以及Artifact里各种部署安装的路径。
当我运行发现404时,为了逐一排除故障我试图用以下操作来解决问题:(代码/路径正确为前提)
为了避免web.xml和springmvc.xml中疏忽的错误造成的原因,我创建一个新的Maven-web项目,部署好tomcat后直接运行。仍然404。再试一次也是一样的结果。
ok,那我不用Maven,单独创建一个Javaweb项目。tomcat部署完成后运行直接出结果
这排除了我tomcat的问题,直接把问题定位到Maven上面。
重新在官网安装了另一个版本的Maven3.5.4,因为听有些大佬说IDEA自带的Maven会有很多坑(真实性未知)。结果还是404。
于是我病急乱投医就创建了一个新的Javaweb和两个Maven下的web做对比。确实真发现了Javaweb和Maven-web除了目录架构以外文件上不同的地方(搭建部署均正确,文件代码均未改动)
.iml文件
iml是 intellij idea的工程配置文件,里面是当前project的一些配置信息。一般正常情况下我们都不会去理它。
而不知道为什么我用Maven创建web的时候自动生成的.iml文件里面是这样的
也就是Maven创建的web里面.iml文件下没有这个配置信息
或者这两个配置信息都没有
这就是我瞎猫碰见死耗子发现的问题所在。
------------------------------跳到这ok,开始解决方法正文-----------------------------------
根据头顶链接的那个博客,如果你的.iml文件里面没有下面这段代码的话,把它加到你.iml文件下的< module >标签下就可以了
而且.iml文件里面只需要有这一配置< component name=“FacetManager”>就可以解决报错404的问题(注意上面说的前提)。
自己对这段代码的理解是它是配置Maven找到web.xml文件的路径的信息,但具体是什么作用暂时也还不得知。
加上这段代码后果然我所有为了测试创建的Maven-web项目都可以正常运行
可问题是后面每一次重新创建Maven-web时.iml文件里面仍然没有这个配置信息,也就是仍然会报错404,只有手动添加才行。这也是我疑惑的地方,怎么才能让它在创建的时候自动将.iml文件生成完整。
不过也不失为一种解决办法,希望能帮到大家。
-----------------------------------------------更新----------------------------------------------------
今天在另一个404报错的web中发现了另一种情况(也是IDEA下Maven创建的web)
这个project的.iml文件里面有< component name=“FacetManager” >这一配置信息,但与我前面贴出来的代码段不同的是:这个.iml文件中所配置的路径是找springmvc.xml这个文件的信息,而我贴的代码段配置的是找到整个项目全局的web.xml的路径信息(个人理解)
所以我用的解决办法还是将我上面贴出来的这段代码原封不动的粘贴覆盖到这个.iml文件里面,完全解决了报错404的问题。
总的来说,如果是因为.iml工程配置文件导致的报错404,就贴上文中给的那段代码基本就可以解决。
参考链接:
.iml代码参考:
https://blog.csdn.net/weixin_41040755/article/details/88059171
.iml理论参考:
https://blog.csdn.net/weixin_41699562/article/details/99552780
生成.iml文件的方法:
https://blog.csdn.net/Dream_Weave/article/details/99693136
第一次写博客,有什么写的不对的地方希望大家多指导交流!!!
如果有朋友知道我文中的疑惑也期待您的指教!!!
大佬轻喷!!!