GWT Async to URL - PullRequest
       10

GWT Async to URL

0 голосов
/ 16 августа 2011

Я использую GWT для разработки веб-приложения. В настоящее время я использую вызовы AJAX для получения значений с сервера. У меня есть следующие вопросы относительно вызовов AJAX:

Предположим: у меня есть приложение, имя которого: «Приложение», а класс точки входа: «entry.java»

Я знаю: приложение может быть вызвано как: http://localhost:8080/Application/entry.html

1. Я хотел бы знать, что является выходным URL-адресом, данным gwt.getmodulebaseURL ()?

Предположим: в том же приложении у меня есть служба с именем «ServerValuesService» и соответствующая ей асинхронная. У меня есть соответствующий serviceImpl, который имеет метод с именем List search (String) на стороне сервера.

Я мог бы также получить значения с сервера. Тем не менее,

2. Я хотел бы знать, какой будет прямой URL для доступа к этому сервису? Для экземпляра мне нужно получить список значений, просто указав URL (передавая значение для строки). то есть мне нужно получить доступ к методу поиска (String) и получить список, просто набрав URL, например:

http://localhost:8080/Application/entry/serverValuesService?string="hello"

Я уверен, что указанный выше URL неверен. Мне нужно знать точное преобразование между URL и соответствующим сервисом. Это вообще возможно?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 16 августа 2011

Предположим: у меня есть приложение, имя которого: «Приложение», а класс точки входа: «entry.java»

Я знаю: приложение может быть вызвано как: http://localhost:8080/Application/entry.html

URL http://localhost:8080/Application/entry.html называется страница хоста URL.На этой html-странице вы загружаете свой модуль GWT, используя тег script:

<!-- This script tag is what actually loads the GWT module.  The -->
<!-- 'nocache.js' file (also called a "selection script") is     -->
<!-- produced by the GWT compiler in the module output directory -->
<!-- or generated automatically in hosted mode.                  -->
<script language="javascript" src="calendar/calendar.nocache.js"></script>

Так что, если вы поместите приведенный выше пример в файл entry.html, модуль будет загружен из http://localhost:8080/Application/calendar/calendar.nocache.js, что сделает http://localhost:8080/Application/calendar/ вашим модулембазовый URL.

Я хотел бы знать, каким будет прямой URL для доступа к этому сервису?Для экземпляра мне нужно получить список значений, просто указав URL (передавая значение для строки).т.е. мне нужно получить доступ к методу поиска (String) и получить список, просто набрав url

GWT RPC использует настраиваемый формат сериализации для кодирования запросов к службе RPC на сервере.Служба RPC реализована в виде подкласса RemoteServiceServlet на сервере.RemoteServiceServlet обрабатывает запросы HTTP POST, десериализует запрос от клиента и вызывает соответствующий метод обслуживания подкласса.

Таким образом, для прямого доступа к сервису вам понадобятся: 1. URL-адрес сервиса 2. Запрос полезной нагрузки, закодированный в пользовательском формате сериализации GWT 3. Возможность HTTP POST полезной нагрузки на URL-адрес сервиса

1 и 3 легко приобрести.Вы уже знаете URL, по которому ваша служба отображается в web.xml.И вы можете делать посты из любого http-клиента или плагина браузера, например this .Сложно было бы сгенерировать полезную нагрузку запроса в пользовательском формате сериализации GWT.В простых случаях вы можете сгенерировать запрос из вашего приложения и получить необработанные полезные данные от Firebug, Fiddler или аналогичного инструмента и просто воспроизвести его, используя ваш http-клиент.

1 голос
/ 16 августа 2011

1) В вашем случае это даст вам http://localhost:8080/Application.Приложение - это ваше имя по модулю.

2) На самом деле эти службы HttpServlets , а их URL-адреса определены в файле web.xml.Но Google использует метод POST для отправки ваших переменных и заботится о сериализации для вас, что вы пытаетесь сделать, это отправить его с помощью метода GET, который, насколько я знаю, не реализован в Google RemoteServiceServlet . Так что ясказал бы «нет», это невозможно, если вы сами не расширили эти службы для работы с методами GET, но я не знаю, возможно ли это.

...