0

我阅读了关于堆栈溢出的另一个答案,其中解释了 spring mvc 从 jsp 页面存储的会话变量的使用。

我想知道的是,对于使用 spring 作为后端的 Web 应用程序,我可以从 HTML 前端中的 JavaScript 代码访问此类会话变量吗?如果是,那么如何从 JavaScript 访问会话变量?

4

2 回答 2

1

您将不得不遍历会话变量并打印出将会话属性设置为数组的脚本。

例如在你的jsp代码中:

添加以下行

<script>
var session= new Array();
<%
for (Enumeration e = session.getAttributeNames() ; e.hasMoreElements() ;) {
     Object obj= e.nextElement();
     %>session['<%=obj%>']='<%=(String)session.getAttribute(obj)%>';<%
   }
%>
</script>

这是假设您的会话属性是字符串。

现在您可以在浏览器 javascript 中访问会话属性

例如:session['key1'] 将给出与服务器中的 key1 对应的 Session 属性的字符串表示形式。

于 2013-01-23T08:41:35.247 回答
1

不,不是直接的。

考虑到会话变量存在于服务器的内存中,而 JavaScript 在客户端的浏览器中执行。一旦清楚这一点,也应该清楚为什么您不能直接访问客户端 JavaScript 中的会话变量。

如果您需要在 JavaScript 代码中读取会话变量,有一些方法可以解决。

  1. 您可以将该值呈现为页面上的 JavaScript 变量
  2. 您创建了一个简单的 AJAX 服务 (REST/JSON),以便您的页面可以使用 JavaScript 中的 AJAX 向服务器发出请求并获取会话变量值
于 2013-01-23T08:37:45.220 回答