2010-01-04 13 views

risposta

2

Esegui il codice JavaScript con Rhino, una libreria JavaScript per Java.

3

È necessario un runtime JS all'interno di un runtime Java. Un modo per farlo è Rhino

8

Le altre risposte sono corrette che se si desidera eseguire JavaScript sul lato server, avresti bisogno di valutarlo nel contesto di un runtime JS.

Tuttavia, non sono convinto che questo sia esattamente quello che stai chiedendo. Penso che ci possa essere una possibilità che tu voglia eseguire alcune "tipiche" funzionalità JS relative a come la pagina viene visualizzata sul computer del cliente o interagita con il client - e che sarà non essere possibile eseguire sul server lato.

Come un esempio concreto:

  1. Se si desidera eseguire un qualche tipo di algoritmo in JS, senza porting di Java - per esempio, avete un po 'di codice JavaScript opaca che genera una particolare sequenza dato un seme - questo funzionerebbe bene se lo si esegue su Rhino sul server.
  2. Se si vuole richiamare una funzione JavaScript, mentre creando pagina, piuttosto che mentre è in esecuzione - per esempio, per ottenere la risoluzione del colore/profondità schermo dell'utente e cambiare modalità di generazione della pagina - quindi questo non essere possibile dal server, in quanto è nessun client a questo punto da interrogare.

In linea di massima, qualsiasi Javascript che coinvolge document o navigator o anche tutti gli elementi della pagina stessa, rischia di cadere in quest'ultima categoria.

Se è davvero necessario ottenere informazioni sull'ambiente client per controllare il rendering della pagina, questo deve essere estratto dal client nella pagina precedente e codificato nella richiesta (come parametri di query o dati del modulo) . Questi parametri possono quindi essere letti direttamente sul server e utilizzati per controllare l'output.

Ricorda che quando il tuo codice è in esecuzione sul lato server, stai creando una pagina (in ultima analisi un mucchio di HTML, CSS e JS) che verrà inviata al client una volta terminata - a questo punto ci sarà ancora nessun client e quindi non puoi interagire con loro.

Mi scuso se ho la parte sbagliata del bastone su questo, ma questo tipo di domanda viene in genere chiesto da persone che non hanno afferrato la separazione client/server.

15

L'inizio è chiaramente esaminare rhino.

penso troverete questo 3 link molto utili

  1. JavaScript EE, Part 1: Run JavaScript files on the server side
  2. JavaScript EE, Part 2: Call remote JavaScript functions with Ajax
  3. JavaScript EE, Part 3: Use Java scripting API with JSP

Si può anche dare un'occhiata a helma

Helma è un ambiente Javascript server-side e un framework di applicazioni Web per la creazione e l'esecuzione rapida ed efficiente di siti Web e applicazioni Internet.

Helma è scritto in Java e utilizza Javascript per il suo ambiente di scripting server-side ...

-3

Se si desidera chiamare JavaScript nel browser da Java sul server, guardare il quadro Fermi. Lo fa su WebSockets.

0

È possibile utilizzare RHINO o NASHORN.

public class RhinoApp { 
private String simpleAdd = "var z=9; z*=9"; 

public void runJavaScript() { 
    Context jsCx = Context.enter(); 
    Context.getCurrentContext().setOptimizationLevel(-1); 
    ScriptableObject scope = jsCx.initStandardObjects(); 
    Object result = jsCx.evaluateString(scope, simpleAdd , "formula", 0, null); 
    Context.exit(); 
    System.out.println(result); 
} 
Problemi correlati