AngularJS首先(登陆页面)具有动态内容

时间:2014-04-28 18:00:15

标签: spring angularjs hibernate struts2

我是AngularJS的全新手。我想检查在我的新项目中使用它的可行性,这是一个Web应用程序。我已经在项目中使用Struts2 Spring和hibernate创建了一些页面。要转换以下这些是我理解的要点:

  1. 将服务器端API转换为返回JSON数据的REST样式

    问题:我可以使用动态HTML加载AngularJS吗?我猜是。不知道怎么样?

    目前我在服务器端使用velocity Templates来填充HTML模板中的数据并将其作为响应发送到AJAX中?如果我尝试使用AngularJS会有什么变化?

  2. 我有一个登陆页面,用于显示存储在DB中的一些图像和与之关联的数据。如何使用AngularJS显示它?

    问题:当我点击网站网址(mysite.com)然后触发加载动态HTML的AJAX请求时,我是否应该加载只包含一个div标签的HTML模板?

  3. 如果我使用AndularJS,如果我选择将我的Data API实现为带有JSON的REST,它是否会完全无效使用Struts2?我想不是因为我仍然需要加载动态HTML视图,这些视图将在服务器上正确生成?

  4. 如果我在客户端上使用带有AngularJS的REST数据API,如何在服务器端维护HTTP会话状态?

  5. 我知道我可以在网上搜索和阅读上述问题的答案。我只需要在一个地方使用它们,这样我就可以进行讨论和其他问题。

1 个答案:

答案 0 :(得分:4)

我可以回答一些你的问题:

  

1)将服务器端API转换为返回JSON数据的REST样式

  

问题:我可以使用动态HTML加载AngularJS。我猜   是。不知道怎么样?       目前我在服务器端使用velocity Templates来填充HTML模板中的数据并将其作为响应发送到AJAX中?什么会改变   如果我尝试使用AngularJS?

如果我理解正确,您希望在服务器端生成模板。在这种情况下 - 您只是不需要AngularJs - 您的视图预先填充在服务器上,浏览器接收静态内容(从客户端的角度来看)。如果你想使用AngularJs,那么你的模板将成为静态内容(从服务器端的角度来看),它们将通过REST服务以角度填充。

  

2)我有一个登陆页面,用于显示一些图像和数据   与它相关联,存储在DB中。我该如何使用它来显示它   AngularJS?

     

问题:我应该加载包含的HTML模板   当我点击网站URL(mysite.com)然后解雇AJAX时,只有一个div标签   请求加载动态HTML?

不完全是。对于基于jQuery的approuch,一个div就足够了(你会使用类似$ .ajax的东西,然后以命令式方式附加数据)。如果是Angular,您需要返回模板。它可能看起来像这样:

<ul ng-controller="MyCtrl">
  <li ng-repeat="item in data">
    <img ng-src="item.image.src">
    <span>{{item.data.someTextProperty}}</span>
  </li>
</ul>

一些AngularJs控制器将激活对REST服务的请求(可能通过你的AngularJs服务)并自动用结果填充模板

function MyCtrl($scope, $http) {
  $http.get('/rest/data').success(function(result) {
    $scope.data = result;
  });
}
  

3)如果我使用AndularJS,它会完全无效使用Struts2   我选择使用JSON将我的Data API实现为REST?我想不像我   仍然需要加载将生成的动态HTML视图   服务器正确吗?

我认为它只会使Struts中使用View of MVC无效,因为AngularJS只会替换它。它也会让你使用像RESTful控制器这样的东西(不太适合Struts,但我觉得有类似的东西)

  

4)如果我使用REST,如何在服务器端维护HTTP会话状态   客户端上使用AngularJS的数据API?

这不是简短的答案,但基本上有以下模式。 AngualrJs提供了http拦截器,可以拦截请求和响应。如果拦截了代码401(未经授权)的响应,您可以向用户提供登录表单以恢复会话,并在完成此操作后重试上一个请求。此外,here您可能会发现此问题的另一个方面。

我希望我的回答对你有帮助。