SpringMVC启动成功访问/hello等路径报noHandlerFound无映射错误
问题排查与修复方案
核心问题1:Controller类未被Spring容器扫描
你贴出的SimpleController类代码缺少包声明,当前Spring MVC配置的组件扫描路径为com.springmvc:
<context:component-scan base-package="com.springmvc" />
如果SimpleController类没有放在com.springmvc包下(即类开头缺少package com.springmvc;声明),容器启动时不会识别到这个带@Controller注解的类,所有接口映射都不会被注册,访问相关路径必然触发noHandlerFound警告。
修复方式:在SimpleController类最顶部添加包声明,确保类路径和扫描规则匹配,同时移除无用的导入:
// 类第一行添加包声明 package com.springmvc; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller public class SimpleController { @RequestMapping("/hello") public String hello() { return "index"; } @RequestMapping("/greeting") public ModelAndView greet() { ModelAndView mav = new ModelAndView("greet"); mav.addObject("greeting", "Hi this me"); return mav; } }
核心问题2:请求路径尾斜杠不匹配
当前@RequestMapping配置的映射路径是不带尾斜杠的/hello、/greeting,但你实际访问的地址带尾斜杠:http://localhost:8080/hello/、http://localhost:8080/greeting/。高版本Spring默认关闭尾斜杠自动匹配规则,带/不带尾斜杠会被识别为完全不同的路径,无法命中映射。
修复方案二选一即可:
- 直接访问不带尾斜杠的地址:
http://localhost:8080/hello、http://localhost:8080/greeting - 修改映射配置,同时兼容两种路径写法:
@RequestMapping({"/hello", "/hello/"}) public String hello() { return "index"; } @RequestMapping({"/greeting", "/greeting/"}) public ModelAndView greet() { ModelAndView mav = new ModelAndView("greet"); mav.addObject("greeting", "Hi this me"); return mav; }
额外校验项
你配置的InternalResourceViewResolver会从/WEB-INF/views/路径下查找JSP视图,需要确认index.jsp、greet.jsp两个文件确实存放在项目的WEB-INF/views目录下,否则映射命中后也会抛出视图找不到的错误。
内容的提问来源于stack exchange,提问作者geek123
相关产品推荐
相关产品推荐

