1. 概述
在本教程中,我們將學習如何將根 URL 映射到 Spring MVC 中的一個頁面。
首先,我們將瞭解 Spring MVC 的默認行為。然後,我們將討論在這種行為被抑制的場景。最後,我們將學習如何提供我們自己的自定義映射。
2. 項目設置
我們可以使用 Spring Initializr 生成項目,同時添加 Spring Web Starter 依賴。
如果手動添加 依賴,則需要在 pom.xml 文件中添加以下內容:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.1. 創建索引頁面
讓我們在 src/main/resources/templates 文件夾中創建一個頁面。 我們將此頁面命名為 index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Index Page</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
2.2. 默認行為
啓動應用程序並觀察 Spring MVC 的默認行為。
應用程序啓動並運行後,請導航到根 URL:http://localhost:8080/。
如您所見,索引頁面在不需要映射的情況下即可顯示。
3. 修改默認行為
讓我們來看一個默認行為被抑制的場景。
3.1. @EnableWebMvc
讓我們為我們的 RootMappingApplication 類添加 @EnableWebMvc 註解:
@SpringBootApplication
@EnableWebMvc
public class RootMappingApplication {
public static void main(String[] args) {
SpringApplication.run(RootMappingApplication.class, args);
}
}
讓我們運行該應用程序並導航到根 URL:http://localhost:8080/。 這一次,我們收到了一個錯誤。
這是因為 @EnableWebMvc 註解禁用了 Spring Boot 自動執行的 Web 應用配置。
要解決這個問題,我們需要提供自定義映射。 讓我們看看如何做。
4. 自定義映射
讓我們看看提供自定義映射的不同方法。
4.1. 使用控制器
通過使用控制器,可以提供路徑和文件映射。
讓我們先創建一個控制器類:
@Controller
public class RootController {
@GetMapping("/")
public String index() {
return "index";
}
}
此控制器類有一個方法映射到“/”路徑。該方法僅返回字符串“index”。在解釋返回值時,Spring MVC 會在 src/main/resources/templates 文件夾中查找同名的模板。
如果運行應用程序並導航到根 URL:http://localhost:8080/, 我們將看到索引頁面顯示。
這是一種提供自定義映射的簡單方法。當只有一個頁面需要映射時,這種方法可以很好地使用。但是,如果需要映射多個頁面,這種方法可能會變得繁瑣。
讓我們看看提供自定義映射的更有效方法。
4.2. 使用 WebMvcConfigurer 接口
通過使用 WebMvcConfigurer 接口,提供路徑和文件映射的另一種方式。
讓我們首先創建一個配置類:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
}
}
此配置類實現了 WebMvcConfigurer 接口。它覆蓋了 addViewControllers() 方法以添加視圖控制器。該視圖控制器映射到“/”路徑,並返回 index 視圖。
再次説明,如果運行應用程序並導航到根 URL:http://localhost:8080/,我們將看到首頁。
請注意,如果控制器和配置都為同一路徑提供映射,則控制器優先。
5. 結論
在本文中,我們學習瞭如何將根 URL 映射到 Spring MVC 中的一個頁面。我們討論了 Spring MVC 的默認行為以及自定義配置如何覆蓋這些默認行為。
我們還研究了兩種提供自定義映射的方法:通過使用控制器和通過使用 <em >WebMvcConfigurer</em> 接口。