вызов java-методов в javascript-коде [закрыт]

17

Я создал метод содержимого класса Java, возвращающий String, мой вопрос - как вызвать эту функцию в моем javascript-коде, чтобы использовать возвращаемое значение из java-метода. Я хочу называть код Java на стороне клиента, встроенный в браузер.

вот пример того, о чем я говорю:

на моей веб-странице у меня есть код javascript, вот некоторые из них:

    function createChartControl(htmlDiv1)
{
    // Initialize Gantt data structures
    //project 1
    var parentTask1 = new GanttTaskInfo(1, "Old code review", new Date(2010, 5, 11), 208, 50, "");
......................

Я хочу создать методы содержимого класса Java для предоставления данных этой функции javascript «GanttTaskInfo». например, для получения имени, получения идентификатора и даты. хорошо, я думаю, что на этот раз я ясно: D Я искал способ вызова java-методов в javascript, и я нашел апплеты, как вы сказали, но я думаю, что это не полезно для меня. Еще раз спасибо

    
задан Nadya Nux 11.07.2011 в 13:03
источник
  • Вопрос нуждается в уточнении. –  Martin Peters 11.07.2011 в 13:05
  • Какой код Java? Applet? Веб-сервис? JSP? Какой код JavaScript? В браузере? Node.js? Как вы ожидаете, что данные пройдут между этими двумя? На каких компьютерах они работают? –  Quentin 11.07.2011 в 13:05
  • Почему закрыто? Я думаю, что это довольно хороший вопрос. Решение поддерживается платформой Oracle Java. Посмотрите на мой ответ :) –  zacheusz 11.07.2011 в 13:34
  • Хотя вопрос двусмыслен, вы можете позволить ему улучшиться. Один из способов вызвать java из javascript - использовать Java Scripting Engine –  Op De Cirkel 11.07.2011 в 13:47
  • +1, чтобы повторно открыть вопрос –  Op De Cirkel 11.07.2011 в 13:57

2 ответа

22

Когда он находится на стороне сервера, используйте веб-службы - возможно, RESTful с JSON.

Когда Java-код находится в апплете, вы можете использовать мост JavaScript. Мост между языками программирования Java и JavaScript известен как LiveConnect , реализован в плагине Java . Раньше функциональность LiveConnect, зависящая от Mozilla, такая как возможность вызова статических методов Java, создания экземпляров новых объектов Java и ссылок на сторонние пакеты из JavaScript, теперь доступна во всех браузерах.

Ниже приведен пример из документации. Посмотрите methodReturningString .

Код Java:

public class MethodInvocation extends Applet {
    public void noArgMethod() { ... }
    public void someMethod(String arg) { ... }
    public void someMethod(int arg) { ... }
    public int  methodReturningInt() { return 5; }
    public String methodReturningString() { return "Hello"; }
    public OtherClass methodReturningObject() { return new OtherClass(); }
}

public class OtherClass {
    public void anotherMethod();
}

Веб-страница и код JavaScript:

<applet id="app"
        archive="examples.jar"
        code="MethodInvocation" ...>
</applet>
<script language="javascript">
    app.noArgMethod();
    app.someMethod("Hello");
    app.someMethod(5);
    var five = app.methodReturningInt();
    var hello = app.methodReturningString();
    app.methodReturningObject().anotherMethod();
</script>
    
ответ дан zacheusz 11.07.2011 в 13:11
-4

Java - это серверный язык, а javascript - язык на стороне клиента. Оба не могут общаться. Если вы настроили какой-то скрипт на стороне сервера, используя Java, вы можете использовать AJAX на клиенте, чтобы отправить асинхронный запрос к нему и, таким образом, вызывать любые возможные функции Java. Например, если вы используете jQuery как js framework, вы можете взглянуть на $.ajax() . Если вы хотите сделать это с помощью простого javascript, вот учебник .

    
ответ дан Darin Dimitrov 11.07.2011 в 13:05
  • Нет, Java является языком на стороне клиента, а JavaScript - языком на стороне сервера. –  Quentin 11.07.2011 в 13:06
  • Они могут - я думаю, что Надя может означать сценарий апплета, доступного для сценариев, где Javascript действительно может звонить в мир Java и наоборот. Но в любом случае вопрос слишком подробный, чтобы знать;) –  emboss 11.07.2011 в 13:07
  • Да, апплеты все еще существуют, я использую один на еженедельной основе (хотя я бы предпочел, чтобы это не было реализовано именно так). –  Quentin 11.07.2011 в 13:09
  • @Darin: К сожалению, они единственные, совместимые в браузерах, которые позволяют вам получить доступ к совместимой с PKCS # 11 смарт-карте в веб-приложении. Позор для поставщиков / производителей браузеров, чтобы не интегрировать это прямо в Javascript! –  emboss 11.07.2011 в 13:11
  • извините, если мой вопрос не ясен, потому что я все еще начинаю, я объясню это, у меня есть класс java с методами, а в моем веб-портале у меня есть код javascript. Я хочу вызвать мои методы в javascript-коде без использования апплетов. –  Nadya Nux 11.07.2011 в 14:03
Показать остальные комментарии