我阅读了关于堆栈溢出的另一个答案,其中解释了 spring mvc 从 jsp 页面存储的会话变量的使用。
我想知道的是,对于使用 spring 作为后端的 Web 应用程序,我可以从 HTML 前端中的 JavaScript 代码访问此类会话变量吗?如果是,那么如何从 JavaScript 访问会话变量?
我阅读了关于堆栈溢出的另一个答案,其中解释了 spring mvc 从 jsp 页面存储的会话变量的使用。
我想知道的是,对于使用 spring 作为后端的 Web 应用程序,我可以从 HTML 前端中的 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 属性的字符串表示形式。
不,不是直接的。
考虑到会话变量存在于服务器的内存中,而 JavaScript 在客户端的浏览器中执行。一旦清楚这一点,也应该清楚为什么您不能直接访问客户端 JavaScript 中的会话变量。
如果您需要在 JavaScript 代码中读取会话变量,有一些方法可以解决。