从JavaScript读取JSPvariables

我如何从JavaScript读取/访问JSPvariables?

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> 

注意:在渲染之前清理input,可能会打开大量的XSS可能性

最清洁的方式,据我所知:

  1. 将您的JSPvariables添加到HTML元素的data- *属性
  2. 然后在需要时通过Javascript读取这个值

我对这个SO页面上的当前解决scheme的看法:在实际的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/

资源:

假设你正在讨论HTML文档中的JavaScript。

你不能直接这样做,因为就JSP而言,它正在输出文本,就页面而言,它只是获得一个HTML文档。

你必须生成JavaScript代码来实例化variables, 注意在JS中转义任何具有特殊含义的字符 。 如果你只是转储数据(如其他答案所build议的),那么当数据包含新行,引号字符等时,将会发现数据正在翻倒。

最简单的方法是使用JSON库(在http://json.org/的底部列出一堆),然后获得JSP输出:;

 <script type="text/javascript"> var myObject = <%= the string output by the JSON library %>; </script> 

这会给你一个对象,你可以访问像:

 myObject.someProperty 

在JS。

  <% String s="Hi"; %> var v ="<%=s%>"; 

首先java脚本是客户端脚本语言,而jsp是你不能访问的服务器端语言,在服务器端处理客户端语言的任何variables而不发送请求到服务器,只有在服务器接收到请求后才能访问客户端语言variables所以只有通过请求的方法

另一件事是“如何将这些variables发送到服务器”有两个选项…既可以使用隐藏的字段,也可以使用js的用户window.location对象……

 `window.location.replace("home.jsp?nm="+v);` `<%String name=request.getParameter("nm");%>` window.location.href("home.jsp?nm="+v); <%String name=request.getParameter("v");%> 

那么你可以在jsp上访问客户端数据