springMVC,请求无法到达controller,报404

导语:

遇到404,大家都清楚是请求路径的问题,要么是没有这个路径,要么请求路径和实际路径不一致。springMVC的项目,访问时,404时,后台也不会有任何提示。所以就得寻根溯源,一点点捋。

问题描述:

浏览器访问路径没有问题,controller路径映射也没有问题,那么为什么会404呢。大家一定在网上看到了很多关于配置的问题,为什么在此不描述呢?因为这个项目是个成型的项目,基础配置肯定没有问题,肯定是自己新增的controller或页面出现的问题。所以可以排除spring配置文件的问题。所以把问题侧重点放在自己新建的文件上。

(以下图片显示的是我的controller,由于包名一些内容可能暴露版权方信息且无关紧要,所以模糊处理了。)

注意左侧的包名:test.controller。404时,此处包名为test,那为什么改成test.controller就可以了呢?

我们在做一个web项目的时候,web.xml是整个项目的核心入口,配置springMVC,就要在web.xml。所以我们首先查看web.xml的配置。如下图:

可以看出,我们的springMVC配置文件是springMVC-servlet.,所以我们查看这个文件。如下图

上面已经说了,spring基础配置都没问题,映射路径也没问题,所以肯定不是视图解析器的问题(基础配置可参考spring入门相关文章)。所以我们考虑肯定跟自己新定义的文件或包出现了路径问题。所以我们就找在此文件中跟此有关系的配置。注意上面标红的配置。里面显示的是我们controller类的包的路径,我们看到路径是**.controller。所以就是说定义完**前面的路径后(图中模糊处理了),任何包名后面必须跟着.controller。所以我将test包改成test.controller。问题就解决了。原因就是容器初始化时,不会去扫描test,而是要扫描所有以.controller为结尾的包。无法扫描初始化我写的这个controller,当然就报404了。配置的形式:<context:component-scan base-package=“shangjilujing.**.controller”/>

关于此配置,可参考文章:https://blog.csdn.net/chunqiuwei/article/details/16115135

后语:

我的是maven项目,改动完后,clean-->install-->重启服务。ok.

猜你喜欢

转载自blog.csdn.net/Eric_YS/article/details/82179951