SpringMVC配置、注解完全正确但一直提示404

在学习SpringMVC时遇到404错误,尽管配置文件和注解都正确。通过log4j调试发现控制器方法未被编译到WEB-INF/classes目录。解决方法是重新构建项目,或者确保Eclipse的Build automatically选项开启,以自动编译Java文件。手动构建或开启自动构建能避免类似问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

出现的问题

在学习springMVC时,测试的页面一直提示404,但检查后发现SpringMVC的配置(web.xml和spring-mvc.xml)、注解完全正确。

使用的是eclipse编辑器,后台并没有报错,于是使用log4j打印详细信息

log4j在debug模式下控制台的信息:

15:01:51,530 DEBUG DispatcherServlet:845 - DispatcherServlet with name 'dispatcher' processing GET request for [/sdibt_springmvc/hello]
15:01:51,542 DEBUG RequestMappingHandlerMapping:297 - Looking up handler method for path /hello
15:01:51,543 DEBUG RequestMappingHandlerMapping:305 - Did not find handler method for [/hello]
15:01:51,546 DEBUG SimpleUrlHandlerMapping:168 - Matching patterns for request [/hello] are [/**]
15:01:51,550 DEBUG SimpleUrlHandlerMapping:193 - URI Template variables for request [/hello] are {}
15:01:51,556 DEBUG SimpleUrlHandlerMapping:123 - Mapping [/hello] to HandlerExecutionChain with handler [org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler@1c075db8] and 1 interceptor
15:01:51,557 DEBUG DispatcherServlet:931 - Last-Modified value for [/sdibt_springmvc/hello] is: -1
15:01:51,566 DEBUG DispatcherServlet:1018 - Null ModelAndView returned to DispatcherServlet with name 'dispatcher': assuming HandlerAdapter completed request handling
15:01:51,566 DEBUG DispatcherServlet:996 - Successfully completed request

分析控制台的信息

主要问题是hello这个controller方法找不到,于是怀疑java文件没有编译到WEB-INF的classes目录下。到Tomcat服务器的目录中找到本项目文件夹,到本项目的WEB-INF\classes下查看class文件有没有生成,果然,运行后为空。

解决

重新构建项目,即到eclipse菜单—>project—>clean,重新编译。问题解决了,可以正常访问页面。但新写的方法又提示404错误,再次手动构建项目才可以正常运行。

后来一想,之前为了eclipse启动快,把Build automatically(即保存时自动构建项目)给关闭了。这样需要每次自己手动构建项目,否则,不会对Java文件进行编译。



开启Build automatically后问题解决。

总结

出现404错误通常是关于服务器方面的问题,编辑器的配置也可能导致一些问题的出现。

本次404错误是没有编译Java文件,找不到controller的方法。在于将eclipse的Build automatically关闭了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值