Задать вопрос
Simkhotech
@Simkhotech

Вызов функции java класса из javascript кода?

Привет всем,



Мучаюсь над задачей, помогите решить пожалуйста.



Суть проблемы:

Есть сервлет. На странице клиента некоторое содержимое должно обновляться каждые n секунд. Обновляемая информация берется из выполнения функции, описанной в java классе на сервере.



как вызвать функцию java класса в javascript коде, написанном в jsp файле?



p.s. если что-то не понятно написал — простите, могу дополнить.



Заранее спасибо!
  • Вопрос задан
  • 10528 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
serso
@serso
Java класс существует на стороне сервера, javascript код — на стороне клиента => единственный способ осуществить вызов метода — запросом. Например, можно написать вспомогательный сервлет, который будет обрабатывать ajax запросы и вызывать нужный метод java класса.
Ответ написан
Напрямую вызывать код java из клиентского javascript-а нельзя. Можно послать из браузера http-запрос к серверу, где его обработает сервлет и выдаст результат в каком-то понятном браузеру формате вроде xml или json. В том же jquery это делается не сложно:
$.get("/getTimeLordNameByIndex", { index: 1 })
  .done(function( data ) {
    alert( "First timelord is " + data ); // Doctor?
  });

И сервлет:
@WebServlet("/getTimeLordNameByIndex")
class GetTimeLordNameByIndex extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String index = req.getParameter("index");
        if (index.equals("1")) {
            resp.getWriter().write("Doctor");
        } else {
            throw new ServletException("Can be only one!");
        }
    }
}
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
должно обновляться?
setTimeout(location.reload.bind(location), 1000)
Ответ написан
sigod
@sigod
Вот, что мое гугление дало: stackoverflow.com/questions/4112686/how-to-use-servlets-and-ajax
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы