繁体   English   中英

使用Spring Boot映射html资源

[英]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>

然后,您可以通过导航到本地访问本地页面:

HTTP://本地主机:8080 /问候

如果你想使用Angular,不要实现Thymeleaf(Thymeleaf不是RESTful)。 然后你可以做的是使用$ routeProvider来指定为哪个URI提供的静态资源。 如果在静态目录中有index.html ,Spring Boot会自动将其用作默认页面,然后在Angular中使用的其他静态URI将相对于索引页面。

https://docs.angularjs.org/api/ngRoute/provider/ $ routeProvider

  1. 我实际上将所有静态文件 - index.html,angular.js或bootstrap.js以及所有的angular template.html移动到节点前端代理并通过它代理所有弹簧启动服务调用(这将帮助我避免改装CORS的春季启动服务)。
  2. 或者至少我会使用nginx / httpd来提供所有静态文件,并将所有服务调用代理到spring boot app。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM