我计划将Spring MVC + angularJS用于j2ee应用程序。问题如下:-
- 是否可以将AngularJS与Spring MVC一起使用,我不是在谈论带有Spring配置的Rest Services。它的Spring MVC框架来构建Web应用程序。如果是这样,请 举例说明。
- 我做了谷歌,发现人们使用Spring mvc和restful服务同义词,我得到的谷歌结果就像angularJS + Spring mvc rest服务,其中请求响应是JSON格式,我不确定这是否是他们说其Rest服务的原因。
谢谢
首先,AngularJS
是一个前端MVC框架,你在后端使用什么技术并不重要。可能是Java
(弹簧,支柱或任何其他框架(或.NET
.
为了得到你的回应JSON
,你必须包括"杰克逊JSON处理器"。这是一个与此相关的问题。
Spring:从 Java Bean 返回 JSON 响应
也为了处理你的AngularJS
代码,这里是问题。
Spring MVC 和 Angularjs
干杯!玩得开心!
我正在从此示例开始进行类似的实现 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 控制器中定义查询并返回一个 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 中捆绑东西,在外部和内部测试它们。