【发布时间】:2013-01-06 16:09:51
【问题描述】:
我阅读了关于堆栈溢出的另一个答案,其中解释了 spring mvc 从 jsp 页面存储的会话变量的使用。
我想知道的是,对于使用 spring 作为后端的 Web 应用程序,我可以从 HTML 前端中的 JavaScript 代码访问此类会话变量吗?如果是,那么如何从 JavaScript 访问会话变量?
【问题讨论】:
标签: java javascript spring session
我阅读了关于堆栈溢出的另一个答案,其中解释了 spring mvc 从 jsp 页面存储的会话变量的使用。
我想知道的是,对于使用 spring 作为后端的 Web 应用程序,我可以从 HTML 前端中的 JavaScript 代码访问此类会话变量吗?如果是,那么如何从 JavaScript 访问会话变量?
【问题讨论】:
标签: java javascript spring session
不,不直接。
假设会话变量存在于 服务器 的内存中,而 JavaScript 在 客户端 的浏览器中执行。一旦清楚这一点,您也应该清楚为什么不能在客户端 JavaScript 中直接访问会话变量。
如果您需要在 JavaScript 代码中读取会话变量,有一些方法可以解决。
【讨论】:
您必须遍历会话变量并打印出一个脚本,该脚本将会话属性设置为数组。
例如在你的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 属性的字符串表示形式。
【讨论】: