Spring MVC——將根 URL 映射到頁面
一、概述
在本教程中,我們將了解如何將根 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/](http://localhost:8080/)
:
正如我們所看到的,索引頁面無需任何映射即可顯示。
3.改變默認行為
讓我們看一下默認行為被抑制的場景。
3.1. @EnableWebMvc
讓我們將@EnableWebMvc
註釋添加到我們的RootMappingApplication
類:
@SpringBootApplication @EnableWebMvc public class RootMappingApplication { public static void main(String[] args) { SpringApplication.run(RootMappingApplication.class, args); } }
讓我們運行應用程序並導航到根 URL: [http://localhost:8080/](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/](http://localhost:8080/)
,我們將看到索引頁面。
我們應該注意,如果控制器和配置都為同一路徑提供映射,則控制器優先。
5.結論
在本文中,我們了解瞭如何將根 URL 映射到 Spring MVC 中的頁面。我們討論了 Spring MVC 的默認行為以及它如何被自定義配置覆蓋。
我們還研究了兩種提供我們自己的自定義映射的方法——使用控制器和使用WebMvcConfigurer
接口。
與往常一樣,本文中使用的代碼示例可以在 GitHub 上找到。