SpringBoot控制器映射异常求助:访问路径无GET映射问题排查
解决SpringBoot控制器映射失效及JSP无法访问问题
核心排查点及修复方案
1. 补全JSP文件后缀
你的项目结构中src/main/webapp/WEB-INF/views/welcomepage2缺少.jsp后缀,而application.properties配置了spring.mvc.view.suffix= .jsp,必须确保JSP文件命名为index.jsp和welcomepage2.jsp,否则视图解析器无法定位文件。
2. 修正控制器视图返回路径
第一个控制器方法返回"/index",结合配置的prefix=/WEB-INF/views/,会拼接成/WEB-INF/views//index.jsp(多了一个冗余斜杠),规范写法应去掉开头的斜杠:
@GetMapping("/index") public String nawaWelcomePage (Model model){ model.addAttribute("textcode","testcode!"); return "index"; // 移除开头的/ }
3. 确保控制器被Spring扫描
@SpringBootApplication默认仅扫描启动类所在包及其子包。如果启动类Nawa2Application所在包与Controller包同级(比如启动类在src/main/java/com/example,控制器在src/main/java/Controller),Spring无法自动识别该控制器。
修复方案二选一:
- 将
Controller包移动到启动类的子包下,例如src/main/java/com/example/controller - 在启动类上添加
@ComponentScan指定扫描路径:
@SpringBootApplication @ComponentScan({"Controller", "com.example"}) // 包含控制器包和启动类所在包 public class Nawa2Application { public static void main(String[] args) { SpringApplication.run(Nawa2Application.class, args); } }
4. 修正静态资源配置
spring.mvc.static-path-pattern=/resources/static/**配置错误,正确的静态资源路径配置应为:
spring.mvc.static-path-pattern=/static/** # 或保持默认(无需配置),SpringBoot默认会映射/**到classpath:/static/、classpath:/public/等目录
该配置虽不直接导致控制器映射失效,但错误配置可能引发其他访问问题,建议修正。
5. 验证依赖完整性
你的Gradle依赖已包含tomcat-embed-jasper和jstl(SpringBoot支持JSP的必要依赖),只需确认依赖已成功下载即可(可查看Gradle依赖树或项目lib目录)。
验证步骤
- 修正上述问题后重启项目
- 访问
localhost:8080/index和localhost:8080/welcomepage2,检查是否能正常加载JSP页面并显示模型数据
内容的提问来源于stack exchange,提问作者majayong71
相关产品推荐
相关产品推荐

