我正在使用Spring Boot为我正在创建的网站创建REST API。目前,要访问静态内容,我只需转到资源名称。例如,/index.html
或/dashboard.html
。由于我使用的是REST控制器,因此无法将页面映射到某些URL结尾,因为我使用的是Spring引导,所以没有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信息。
答案 0 :(得分:1)
您可以使用Thymeleaf框架来投放HTML网页内容:
首先,添加依赖项:
<强>的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中返回的字符串完全匹配"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>
然后,您可以通过导航到本地访问该页面:
答案 1 :(得分:0)
如果你想使用Angular,不要实现Thymeleaf(Thymeleaf不是RESTful)。然后你可以做的是使用$ routeProvider来指定为哪个URI提供的静态资源。如果静态目录中有index.html
,则Spring Boot会自动将其用作默认页面,然后在Angular中使用的其他静态URI将相对于索引页面。
https://docs.angularjs.org/api/ngRoute/provider/ $ routeProvider
答案 2 :(得分:0)