集成AngularJS和JSP页面
Integrating AngularJS with JSP Page
目前我们正在将应用程序从JSP迁移到AngularJS。组织决定一次做一个模块。我们遇到的一个挑战是将用户数据从JSP传递到AngularJS(例如index.html)。
我们希望当AngularJS模块被调用时,系统会重新路由到由AngularJS管理的index.html。
我的问题是我们可以采取哪些可能的方式将用户数据(例如用户名)从JSP传输到index.html。
可能的场景:
- 用户登录系统 用户进入Angular的管理模块。系统会将用户重定向到index.html (AngularJS)
- index.html将包含用户凭证(例如用户名和密码) AngularJS将在index.html中管理用户的操作,并使用用户的凭据请求RESTful服务。
TIA
理想情况下,我不建议将username
和password
注入index.html
以供angularjs控制器/服务使用。如果用户在加载angular托管页面时已经通过了身份验证,那么要么注入一个授权令牌,要么设置一个cookie,由浏览器自动发送(假设jsp应用和angular应用在同一域)
现在说到为angularjs注入数据,我能想到的有两种方法(我推荐第二种方法,因为它不会污染全局作用域)
-
作为全局注入,通过
$window
访问。如。让您的服务器端.jsp
呈现一个脚本标记与一个全局变量,如<script type="type/javascript"> var pass = 'whatevervalue'; </script>
并在控制器中使用$window
angular.module('yourapp').controller('YourCtrl', $window){
console.log($window.pass);
}
- 你可以使用angular-preloaded将你的变量注入到
type="text/preloaded"
的脚本标签中,并通过$preloaded
服务将其提供给你的控制器。让你的jsp输出像下面这样的东西
把它放到控制器中,就像在 下面<script type="text/preloaded"> { "data": "point" } </script>
angular.module('app', ['gs.preloaded']) .controller('SomeCtrl', function ($preloaded) { // do something with $preloaded. $preloaded; // => { data: "point", another: { point: "of data" } } });
请记住将预加载的脚本放在控制器脚本之前,以使其工作。从文档
注意:你的脚本标签必须在使用$preloaded之前运行,所以我建议把它们放在文档的头部。
相关文章:
- 如何将输入类型值或id从一个jsp传递到另一个jsp页面
- 如何将日期id从一个jsp传递到另一个jsp页面
- 将多个参数从jsp页面传递给javascript函数
- 如何将jsp表单传递到两个页面
- 如何使用JavaScript更新JSP页面的一些组件
- Selectbox选项在页面刷新jsp后保持选中状态
- 从JSP页面调用Java Script函数未返回值
- 在IFrame中对jsp的onload是将IFrame设置为整个页面/浏览器
- AJAX隐藏调用jsp页面
- 如何使用JavaScript在JSP页面上从下拉列表中呈现选定值的属性
- 如何使用按钮从 JSP 页面执行 Java 代码
- 如何使用 JavaScript/jQuery 将 XML 文件加载到 JSP/HTML 页面
- 是否可以在jsp页面中使用JavaScriptSpellCheck
- 在不重新加载页面的情况下,从JSP(服务器端)b设置一个JavaScript变量
- 如何在刷新jsp页面后保持单选按钮选中点击单选按钮
- 管理<iframe>在jsp页面中
- jsp页面中的Java变量和Javascript变量
- 需要帮助获取javascript中包含的jsp页面的名称
- JavaScript没有'JSP页面重定向后无法工作..任何解决方案
- 将值从.jsp传递到新页面.jsp