[英]Mapping html resources using Spring Boot
我正在使用Spring Boot为我正在创建的网站创建REST API。 目前,要访问静态内容,我只需转到资源名称。 例如, /index.html
或/dashboard.html
。 由于我使用的是REST控制器,因此无法将页面映射到某些URL结尾,因为我使用的是Spring Boot,所以没有web.xml
文件。 (例如,我希望/dashboard
显示dashboard.html
文件。)
我应该使用标准MVC @Controller
控制器来控制我的页面映射还是有更好的方法来做到这一点?
编辑
我现在只需在URL中输入文件名即可访问静态内容。 (例如/index.html
将打开索引。)
我想知道的是,如何重新映射静态内容。 例如,如果我想/dashboard
显示dashboard.html
或者我想要/error
显示/error.html
等...它会让用户更好/更容易地访问www.mydomain.com/dashboard
而不是必须添加.html结尾。
有没有办法用Spring Boot重新映射这样的页面?
编辑2
我希望负担生成放在客户系统上的每个页面的视图。 换句话说,我不希望服务器生成每个页面。 我希望拥有“模板”,然后将其转换为有用的页面,其中包含AngiaJS控制器使用的REST API信息。
您可以使用Thymeleaf框架来提供HTML Web内容:
首先,添加依赖项:
的build.gradle
dependencies {
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
}
然后,创建一个Controller:
GreetingController.java
@Controller
public class GreetingController {
@RequestMapping("/greeting")
public String greeting(@RequestParam(value="name", required=false, defaultValue="World") String name, Model model) {
model.addAttribute("name", name);
return "greeting";
}
}
然后创建一个模板:
name.html
文件的名称必须与Controller中返回的String完全匹配,在本例中为"greeting"
SRC /主/资源/模板/ greeting.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Serving HTML Web Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p>HEY THERE!</p>
</body>
</html>
然后,您可以通过导航到本地访问本地页面:
如果你想使用Angular,不要实现Thymeleaf(Thymeleaf不是RESTful)。 然后你可以做的是使用$ routeProvider来指定为哪个URI提供的静态资源。 如果在静态目录中有index.html
,Spring Boot会自动将其用作默认页面,然后在Angular中使用的其他静态URI将相对于索引页面。
https://docs.angularjs.org/api/ngRoute/provider/ $ routeProvider
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.