1. 概述
在这个教程中,我们将了解如何在Spring MVC中将根URL映射到一个页面。
首先,我们将观察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. 总结
在这篇文章中,我们了解了如何在Spring MVC中将根URL映射到一个页面。我们讨论了Spring MVC的默认行为以及如何通过自定义配置来覆盖它。
我们还介绍了两种提供自定义映射的方法——通过控制器和使用WebMvcConfigurer
接口。
如文中所述的所有代码示例,您可以在GitHub上找到。