如何将服务器变量定义为javascript上下文?

时间:2015-08-03 14:34:51

标签: javascript jsp variables

当我将变量定义到服务器上下文中时,有时我需要将它用于javascript上下文;例如会话ID。

有什么更好的方法呢?

我想分开 javascript文件和查看文件(在我的情况下为jsp);目前我找到了两种方法:

1 myVariables.js.jsp:创建一个返回javascript代码的jsp文件

myLib = {
    sessionID: "${sessionId}",
    [...]
}

并将其作为javascript导入jsp视图文件中:

<html>
    <head>
        <script src="myVariables.js.jsp"></script>
        [...]
    </head>
<body>
[...]
</body>
</html>

我可以写会话ID:myLib.sessionId

优点:方便快捷。

缺点:写一个充当jsp的{​​{1}}文件。

2 )将服务器变量保存到隐藏的输入字段中(例如,在模板的主要部分中):

js

我能够将会话ID写入<html> <head> <script src="myLib.js"></script> [...] </head> <body> <form id="myVariables"> <input type="hidden" name="sessionId" value="${sessionId}" /> [...] </form> [...] </body> </html> 库中的特定函数:

myLib.js

优点:javascript和视图完全分开。

缺点:要编写更多代码;比以前更难理解。

2 个答案:

答案 0 :(得分:0)

在我看来,第一种方式更好,因为您的网页将更干净,更易读。这非常重要! ;)

祝你好运

答案 1 :(得分:0)

我认为第三种方式可以充分利用您的两个建议:包含变量的内联脚本标记:

<html>
    <head>
        <script>
        var myLib = {
            sessionID: "${sessionId}",
            [...]
        };
        </script>
    </head>
<body>
[...]
</body>
</html>

没有单独的JSP可写。就像你问题中的第二个解决方案一样,JavaScript只与myLib绑定,正如第二个解决方案中的JavaScript与表单结构相关联。

我们应该提出的第一个解决方案有一个好处:它允许浏览器缓存HTML(通过将变量分成单独的请求,例如.js.jsp)。将变量与HTML结合使用(如上所述,或者问题中的第二种方法)意味着必须在缓存减少或禁用的情况下提供HTML。