#java #ajax #gwt #rpc
#java #ajax #gwt #rpc
Вопрос:
Я довольно новичок в GWT и пытался собрать воедино все, чтобы иметь возможность взаимодействовать отдельному приложению GWT с приложением spring. Я смог заставить это работать, когда у меня есть класс, который расширяется RemoteServiceServlet
, и теперь он способен успешно выполнить запрос GET к моему приложению spring и получить ответ. Хотя это хорошая отправная точка, я хотел бы выяснить, как теперь иметь возможность отправлять реальный объект из GWT (например, просто HashMap для тестирования) в Spring с помощью метода POST.
Я был бы признателен за любой совет по этому поводу, который указал бы мне правильное направление, я мало что знаю об этом и просматривал учебные пособия, но я продолжаю немного путаться и не совсем уверен, как попытаться это реализовать. На этом примечании, в приведенном ниже коде я не совсем уверен, даже в какой момент фактически выполняется вызов приложения spring, это когда new URL
создается?
Ниже приведен пример кода, который я использую для выполнения запроса GET из GWT:
private String getSpringResponse(String message) {
BufferedReader reader = null;
StringBuilder sb = new StringBuilder();
try {
URL url = new URL("http://localhost:8080/spring-hibernate-mysql/test/test/" message "/");
reader = new BufferedReader(new InputStreamReader(url
.openStream()));
while(reader.ready()){
sb.append(reader.readLine());
}
reader.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
Ответ №1:
Вы можете создавать POST-запросы через URLConnection:http://www.exampledepot.com/egs/java.net/Post.html
Если ваш сервер Spring отвечает JSON, вы можете использовать GSON для сопоставления с вашими классами, или, если он возвращает XML, вы можете использовать JAXB.
Существует также возможность связаться с Spring server напрямую из GWT через межсайтовые запросы. В этом случае Spring server должен возвращать JSON.
Комментарии:
1. Спасибо, да, я только что узнал о возврате JSON для межсайтовых запросов, но у меня уже есть код javascript / spring, который не использует JSON, поэтому я бы предпочел подход, при котором я могу избежать перезаписи. Что касается метода POST для подключения URL, вы знаете, могу ли я отправлять объекты через него (например, даже просто базовую HashMap)? Спасибо за ваш совет
2. Вы должны сериализовать объекты. Для этого используется JSON или XML. Что принимает ваш сервер Spring?
Ответ №2:
Самым чистым подходом было бы использовать чистый стек GWT (т. е. gwt-dispatch, gin и guice).) Для этого подхода взгляните на проект gwt-platform, очистите клиент / сервер gwt и платформу DI в одном флаконе.
Если у вас нет возможности изменить технологический стек, а ваш сервер уже построен, или вам удобнее использовать spring DI framework. Вы можете интегрировать сервлеты spring, используя подход, аналогичный проекту spring4gwt.
С spring4gwt кажется, все, что вам нужно сделать, это определить службу spring, которую вы хотите интегрировать в свой клиент GWT, и определить стандартные классы RemoteService на клиенте.
Последние версии GWT автоматически обрабатывают сериализацию для всех классов, помеченных как Serializable (включая HashMap) или IsSerializable (для пользовательских классов данных).) Смотрите Документы по сериализации gwt.
Комментарии:
1. Спасибо за информацию, я определенно настроен на то, чтобы остаться с Spring на стороне сервера, я слышал о spring4gwt, поэтому я изучу это, честно говоря, у меня, кажется, проблемы с пониманием некоторых из этих вещей в отношении связи между gwt и spring, но я полагаю, что это просто моя новизна для этого
2. также ознакомьтесь с простым примером spring от gwt-platform