使用Spring Boot

时间:2016-10-27 18:55:34

标签: java angularjs spring spring-mvc spring-boot

我正在使用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信息。

3 个答案:

答案 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>

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

  

http://localhost:8080/greeting

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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