为啥我的控制器中的根路径映射到 Spring Boot Web 应用程序中的 index.html?
Posted
技术标签:
【中文标题】为啥我的控制器中的根路径映射到 Spring Boot Web 应用程序中的 index.html?【英文标题】:Why does root path in my controller maps to index.html in spring boot web application?为什么我的控制器中的根路径映射到 Spring Boot Web 应用程序中的 index.html? 【发布时间】:2022-01-10 10:44:39 【问题描述】:我正在测试一个用于 Spring Boot 应用程序的控制器。我想将资源映射到路径,这应该是我的 API 的一部分。 我的控制器对路径非常具体:
@Controller
public class DefaultController
@RequestMapping("$web-interface")
public String main()
return "index.html";
这里的 'web-interface' 是一个属性,在 application.yml 文件中指定
spring:
datasource:
url: jdbc:mysql://localhost:3306/search-engine
username: landsreyk
password: 12345678
jpa:
database-platform: org.hibernate.dialect.MySQLDialect
show-sql: false
hibernate:
ddl-auto: none
web-interface: /admin
预期行为:
路径:localhost:8080/admin 映射到 index.html 资源
根路径:localhost:8080/ 没有映射,即 404 错误。
实际行为:
path: '/admin' 映射到 index.html
path: '/' 也映射到 index.html
但是为什么呢?我不应该只看到“Whitelabel Error Page”吗?没有控制器,它将根路径映射到 index.html 文件。这没有任何意义。
顺便说一下,这是我的项目结构。
解决方案:
将 index.html 重命名为任何其他名称,例如 main.html,并且根路径“/”将不再映射到该资源。
【问题讨论】:
【参考方案1】:根路径 "/" 默认映射到 index.html。它是所有语言和框架的标准。 index.html 是应用程序的入口点
【讨论】:
【参考方案2】:这是每个入口点的默认行为。 DefaultController
实现了默认行为,这就是为什么调用 "/" 或 "/root" 并不重要。
欲了解更多信息:https://docs.spring.io/spring-boot/docs/2.6.1/reference/htmlsingle/#web.servlet.spring-mvc.welcome-page
【讨论】:
以上是关于为啥我的控制器中的根路径映射到 Spring Boot Web 应用程序中的 index.html?的主要内容,如果未能解决你的问题,请参考以下文章