You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot应用中@Controller无法生效的问题及解决方法

解决@Controller未生效的问题

1. 修复Controller类的语法错误

你的HomeController中导入GetMapping的语句使用了单引号,属于语法错误,会导致编译失败,Spring无法识别该控制器。修改为正确的代码:

package com.learning.SpringBootWeb;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {
    @GetMapping("/")
    public String home() {
        return "index";
    }
}

2. 调整依赖避免版本冲突

单独引入tomcat-jasper可能和Spring Boot自带的Tomcat版本冲突,建议替换为Spring Boot官方提供的JSP支持依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- 改用Spring Boot适配的JSP依赖,自动匹配版本 -->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

3. 配置JSP视图解析路径

在src/main/resources/application.properties中添加视图解析配置,指定JSP文件的存放路径:

# JSP文件所在目录前缀
spring.mvc.view.prefix=/WEB-INF/jsp/
# JSP文件后缀
spring.mvc.view.suffix=.jsp

同时确保index.jsp文件放在src/main/webapp/WEB-INF/jsp/目录下,目录不存在请手动创建。

4. 确认包扫描范围(可选)

虽然启动类和控制器在同一包下,@SpringBootApplication默认会扫描启动类所在包及其子包,若需显式指定可修改启动类:

@SpringBootApplication(scanBasePackages = "com.learning.SpringBootWeb")
public class SpringBootWeb1Application {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootWeb1Application.class, args);
    }
}

完成以上修改后重启应用,访问根路径即可正常加载index.jsp页面。

内容的提问来源于stack exchange,提问作者Kireeti Nunna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 01:38:19