从 JavaScript 读取 JSP 变量

2022-08-31 16:04:47

如何从 JavaScript 读取/访问 JSP 变量?


答案 1
alert("${variable}");

alert("<%=var%>");

或完整示例

<html> 
<head>
<script language="javascript"> 

function access(){ 
  <% String str="Hello World"; %>
   var s="<%=str%>"; 
   alert(s); 
} 

</script> 
</head> 

<body onload="access()"> 
</body> 

</html>

注意:在渲染之前清理输入,它可能会打开很多XSS的可能性


答案 2

据我所知,最干净的方式:

  1. 将 JSP 变量添加到 HTML 元素的 data-* 属性
  2. 然后在需要时通过Javascript读取此值

我对这个SO页面上的当前解决方案的看法:在实际的javascript代码中使用java scriplet“直接”读取JSP值可能是您可以做的最恶心的事情。让我想吐。哈哈。说真的,尽量不要这样做。

没有 JSP 的 HTML 部分:

<body data-customvalueone="1st Interpreted Jsp Value" data-customvaluetwo="another Interpreted Jsp Value">
    Here is your regular page main content
</body>

使用 JSP 时的 HTML 部分:

<body data-customvalueone="${beanName.attrName}" data-customvaluetwo="${beanName.scndAttrName}">
    Here is your regular page main content
</body>

Javascript 部分(为简单起见,使用 jQuery):

<script type="text/JavaScript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js"></script>
<script type="text/javascript">
    jQuery(function(){
        var valuePassedFromJSP = $("body").attr("data-customvalueone");
        var anotherValuePassedFromJSP = $("body").attr("data-customvaluetwo");

        alert(valuePassedFromJSP + " and " + anotherValuePassedFromJSP + " are the values passed from your JSP page");
});
</script>

这是jsFiddle,看看它在行动 http://jsfiddle.net/6wEYw/2/

资源: