gpt4 book ai didi

java - 如何返回特定 URL 上的一些 HTML 文件 - Spring Boot

转载 作者:行者123 更新时间:2023-12-01 21:58:28 29 4
gpt4 key购买 nike

我是 Spring Boot 新手。当用户给我特定的 URL 时,我尝试返回一些页面。

我有两个页面:

\src\main\resources\static\index.html
\src\main\resources\static\admin.html

现在我有以下对:

GET / - return index.html
GET /admin.html - return admin.html

我想要以下对:

GET / - return index.html
GET /admin - return admin.html

我知道,我可以创建一些Controller,然后我可以使用注释@RequestMapping("/admin")并返回我的管理页面。但这需要很多行动。如果我有更多页面怎么样?

最佳答案

除了创建一个使用@RequestMapping定义所有方法的@Controller之外,还有另一种方法,它更方便一些,并且如果添加或删除则不需要更改html 文件。

选项 1 - 如果您不介意人们看到 .html 后缀

将文件保留在 static 文件夹中,然后将 WebMvcConfigurer 添加到您的项目中,如下所示:

@Configuration
public class StaticWithoutHtmlMappingConfigurer extends WebMvcConfigurerAdapter implements WebMvcConfigurer {

private static final String STATIC_FILE_PATH = "src/main/resources/static";

@Override
public void addViewControllers(ViewControllerRegistry registry) {

try {
Files.walk(Paths.get(STATIC_FILE_PATH), new FileVisitOption[0])
.filter(Files::isRegularFile)
.map(f -> f.toString())
.map(s -> s.substring(STATIC_FILE_PATH.length()))
.map(s -> s.replaceAll("\\.html", ""))
.forEach(p -> registry.addRedirectViewController(p, p + ".html"));

} catch (IOException e) {
e.printStackTrace();
}

// add the special case for "index.html" to "/" mapping
registry.addRedirectViewController("/", "index.html");
}

}

选项 2 – 如果您更喜欢不使用 html 并通过模板引擎进行解析

将您的 html 移至模板文件夹,启用例如thymeleaf 模板并将配置更改为:

@Configuration
public class StaticWithoutHtmlMappingConfigurer extends WebMvcConfigurerAdapter implements WebMvcConfigurer {

private static final String STATIC_FILE_PATH = "src/main/resources/static";

@Override
public void addViewControllers(ViewControllerRegistry registry) {

try {
Files.walk(Paths.get(STATIC_FILE_PATH), new FileVisitOption[0])
.filter(Files::isRegularFile)
.map(f -> f.toString())
.map(s -> s.substring(STATIC_FILE_PATH.length()))
.map(s -> s.replaceAll("\\.html", ""))
.forEach(p -> registry.addViewController(p).setViewName(p));

} catch (IOException e) {
e.printStackTrace();
}

// add the special case for "index.html" to "/" mapping
registry.addViewController("/").setViewName("index");
}

}

关于java - 如何返回特定 URL 上的一些 HTML 文件 - Spring Boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34100343/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com