如何在服务器端Java代码上运行JavaScript代码?

use*_*541 13 javascript java

我想在服务器端运行JavaScript代码.我想在我的Java代码中操纵JavaScript返回的结果.怎么做到呢?

Dom*_*oam 17

开始显然是要研究犀牛.

我想你会发现这3个链接非常有用

  1. JavaScript EE,第1部分:在服务器端运行JavaScript文件
  2. JavaScript EE,第2部分:使用Ajax调用远程JavaScript函数
  3. JavaScript EE,第3部分:在JSP中使用Java脚本API

你也可以看看helma

Helma是一个服务器端Javascript环境和Web应用程序框架,用于快速高效地编写脚本并为您的网站和Internet应用程序提供服务.

Helma是用Java编写的,它使用Javascript作为服务器端脚本环境......


And*_*yle 10

其他答案是正确的,如果您想在服务器端执行Javascript,则需要在JS运行时的上下文中对其进行评估.

但是,我不相信这正是你所要求的.我认为您可能希望运行一些"典型"JS功能,这些功能与页面在客户端计算机上的显示方式或客户端上的交互方式有关 - 而且无法在服务器端运行.

作为一个具体的例子:

  1. 如果你想在JS中运行某种算法而不将其移植到Java - 比如说,你有一些不透明的Javascript代码,它会在给定种子的情况下生成一个特定的序列 - 如果你在服务器上的Rhino上运行它,它会正常工作.
  2. 如果你想在创建页面时调用Javascript函数,而不是在它运行时 - 比如说,为了获得用户的颜色深度/屏幕分辨率并改变页面的生成方式 - 那么这将无法从服务器进行,​​因为那里此时没有客户端查询.

从广义上讲,任何涉及documentnavigator甚至任何页面本身元素的Javascript 都可能属于后一类.

如果您确实需要获取有关客户端环境的信息以控制页面的呈现方式,则必须从上一页的客户端中提取该信息,并将其编码到请求中(作为查询参数或表单数据).然后可以直接在服务器上读取这些参数并用于控制输出.

请记住,当你的代码是在服务器端运行,你要创建一个页面(最终一串HTML,CSS和JS的),一旦完成,将被发送到客户端-在这一点上没有客户端还没有等你无法与他们互动.

如果我在这个问题上得到错误的结论,我会道歉,但这类问题通常是由那些没有掌握客户/服务器分离的人提出的.


Mag*_*nar 2

您可以使用Rhino(Java 的 JavaScript 库)执行 JavaScript 。