0

I plan to use Spring MVC + angularJS for an j2ee application. The questions are as follows :-

  1. Is it possible to use AngularJS with Spring MVC, i am not talking about the Rest Services with Spring configuration here. Its Spring MVC framework to build the webapplication.If so kindly please throw light with an example.
  2. I did google and found out like people use spring mvc and restful services synonymously,the google results which i got was like angularJS + spring mvc rest services,where in the request response is in the JSON format, i am not sure if thats the reason they say its Rest service.

Thank you

4

2 回答 2

4

首先,AngularJS它是一个前端 MVC 框架,你在后端使用什么技术并不重要。可能是Java(Spring、Struts 或任何其他框架)或.NET.

为了得到您的回复JSON,您必须包含“杰克逊 JSON 处理器”。这是一个与此相关的问题。

Spring:从 Java Bean 返回 JSON 响应

还要处理你AngularJS的代码,这里的问题。

Spring MVC 和 Angularjs

干杯! 与 Angular 一起玩得开心!

于 2013-09-22T06:22:52.400 回答
0

我正在从这个示例https://github.com/xvitcoder/spring-mvc-angularjs开始进行类似的实现。与样品的主要区别

a) 将所有 AngularJS HTML 文件放在 webapp/WEB-INF/views 下

b) 在 /views 上映射一个 Spring ViewResolver。我们正在使用 Velocity,但您可以使用 freechart 或任何视图技术。

<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="resourceLoaderPath" value="/WEB-INF/views/">
</bean><!-- see xvitcoder sample for the complete web.xml-->

c) 有一个控制器来响应您的 HTML 部分请求。神奇的是客户端 URL 不需要匹配物理文件夹结构。当您有一个静态 html 项目时,这是缺少的东西。

@RequestMapping("dummypath/{folder}/{remainder}")
public String getSomePartial(@PathVariable("folder") String folder,
@PathVariable("remainder") String path) {
return folder + "/" + path;
}

dummpypath 允许将 AngularJS 部分请求(ngInclude、ngView)与其他请求(如 servlet 或 REST 服务)隔离开来。HTML 文件实际上仍在 /views/folder/path 下。你可以做更复杂的事情,比如计算不同的视图名称。

<div ng-include="dummypath/summary/table.html"></div>

将加载 views/summary/table.html 文件。您的 ViewResolver 将预先处理此文件,允许一些服务器端修复。

d) 从 Spring MVC 向 angularjs 传递参数的示例。在 Spring Controller 中定义查询并返回一个 html 文件

@RequestMapping
public String getPage(@RequestParam(value="someparam", defaultValue="0") string myparam,
ModelMap model){
model.addAttribute("someparam", myparam)
return "index"; //index.html
}

在 AngularJs 控制器中注入 $location 以检索参数。

$scope.someparam = ($location.search()).someparam

加载索引后,我们就进入了 Angular 生态系统!我正在使用这种方法在保留上下文的同时刷新网页。根据查询参数,您可以加载一些 JSON 内容或将 ngSwitch 放在正确的部分。

e) 优点和缺点

优点:你不能总是用静态文件 + REST 构建一个完整的解决方案

缺点:测试和构建项目需要额外的步骤。您需要在 WAR 中捆绑东西,在外部和内部测试它们。

于 2013-10-30T12:02:05.867 回答