繁体   English   中英

AngularJS Spring MVC设置

[英]AngularJS Spring MVC setup

我是Spring MVC的初学者。 我想使用AngularJS和Spring MVC设置RESTful单页应用程序。

作为普通的Web应用程序,当用户请求URI时,后端Web服务器将首先将HTML模板传输到前端,然后使用JSON进行通信。

我只是想知道如何将HTML模板从Spring MVC服务传输到前端。

任何信息将不胜感激。 非常感谢。

另外,对您的要求更合适的恕我直言,不必理会初始控制器,只需将您的html和javascript作为静态资源提供服务,就可以在spring conf中使用类似的方法:

<mvc:resources location="/app/" mapping="/app/**"/>
<mvc:annotation-driven/>

然后仅使用ajax和rest控制器与后端进行交互。

下面是一个非常简单的示例(摘自《 Spring Guide 使用AngularJS消费RESTful Web服务》 ):

创建一个可静态访问的html页面(如本指南所述,使用Spring Boot意味着有一些标准位置会自动用于静态资源-如果您不使用Spring Boot,则必须进行配置),喜欢:

<!doctype html>
<html ng-app>
    <head>
        <title>Hello AngularJS</title>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script>
        <script src="hello.js"></script>
    </head>

    <body>
        <div ng-controller="Hello">
            <p>The ID is {{greeting.id}}</p>
            <p>The content is {{greeting.message}}</p>
        </div>
    </body>
</html>

hello.js脚本可能是

function Hello($scope, $http) {
    $http.get('http://yourpath/greeting').
        success(function(data) {
            $scope.greeting = data;
        });
}

然后相应的Spring Service将是:

@RestController
public class Controller {

   @RequestMapping("/greeting")
   public Greeting greeting() {
      return new Greeting();
   }

}

public class Greeting {
   private final Integer id;
   private final String message;

   public Greeting() {
      this(1,"test")
   }

   public Greeting(Integer id, String message) {
      this.id = id;
      this.message = message;
   }

   public Integer getId() {
      return id;
   }

   public String getMessage() {
      return message;
   }
} 

在这个非常简单的示例中,仅将模板作为静态资源进行访问,因此将模板转移到了前端。 您当然可以想象一个更复杂的场景,其中控制器将是

@Controller
public class Controller {

   @RequestMapping("/greeting")
   public ModelAndView greeting() {
      return new ModelAndView("someView", someObject);
   }

}

和Spring MVC会根据配置的ViewResolversomeView映射到模板。 这样,服务器将使用所需的任何数据动态填充模板。

您可以查看更多教程:

暂无
暂无

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

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