Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Spring MVC parse JSON req and get json resp 
:(
    Опции темы
4epT
Дата 22.11.2012, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Всем привет. Делаю сервис, который будет принимать JSON запросы и отдавать JSON ответы. Все зпросы server-to-server по http. Json идет в теле запроса.

Хочется применить Spring. На сколько я понял, единственный вариант ловить спрингом запросы, это использование Spring MVC (контроллеров). Знаю что можно парсить JSON параметры запроса сразу в объекты, а можно как то автоматически парсить JSON, если он идет непосредственно в теле запроса ?

И как из Spring контроллера отдать JSON ответ ? Там везде нужно возвращать ModelAndView. Очень долго гуглил, так и не наше ничего ...  smile 

И может быть в моем случае можно что то использовать вместо Spring MVC ?
PM MAIL   Вверх
jk1
Дата 22.11.2012, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 5
Всего: 75



Цитата

И как из Spring контроллера отдать JSON ответ ? Там везде нужно возвращать ModelAndView. 


Ничего подобного, возвращать можно String, можно Stream, можно много чего еще, вплоть до void. Вот пример из нашего проекта, он показывает как писать ответ в контроллере:

Код

   @RequestMapping(value="/contacts/types", method = RequestMethod.GET)
   @ResponseBody
   public UserContactType[] getContactTypes() {
       List<UserContactType> types = service.getAvailableContactTypes();
       return types.toArray(new UserContactType[types.size()]);
   }


SpringMVC сгенерирует из возвращенного массива json array с содержимым данных типов


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
4epT
Дата 22.11.2012, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Цитата(jk1 @ 22.11.2012,  15:39)
SpringMVC сгенерирует из возвращенного массива json array с содержимым данных типов

А не подскажете как он это сделает ? На каком этапе ?

В моем случае, Spring MVC не будет слишком громоздким ?

Это сообщение отредактировал(а) 4epT - 22.11.2012, 15:47
PM MAIL   Вверх
jk1
Дата 22.11.2012, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 5
Всего: 75



Цитата

В моем случае, Spring MVC не будет слишком громоздким ?


Все зависит от вашего случая. Если требуется всего навсего выставить пару REST-сервисов, то Spring MVC для этого явный overkill. Для такого случая берите любую реализацию JAX-RS, например Jersey или ResrEasy.
Если же есть приложение и так на Spring, а к нему надо прикрутить отдачу JSON, то Spring MVC вполне удобен, от него солюшен не потяжелеет.

Цитата

А не подскажете как он это сделает ? На каком этапе ?

При загрузке контекста парсер для начала отыщет <mvc:annotation-driven/>, затем поищет в classpath jackson. Если jakson нашелся, то становится возможен прямой маршалинг POJO-объекта через него в JSON.
Теперь после того, как отработает контроллер, хэндлер будет отдавать результат его работу Jakson'у для превращения в JSON и после будет формировать из этого JSON'а response.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
4epT
Дата 22.11.2012, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



Цитата

При загрузке контекста парсер для начала отыщет <mvc:annotation-driven/>, затем поищет в classpath jackson. Если jakson нашелся, то становится возможен прямой маршалинг POJO-объекта через него в JSON.
Теперь после того, как отработает контроллер, хэндлер будет отдавать результат его работу Jakson'у для превращения в JSON и после будет формировать из этого JSON'а response. 


А можно ссылочку на какой нибудь пример ?

Приложение как раз планируется именно в виде сервиса, никаких view там не будет. От спринга не хотелось бы уходить, так как хотелось бы использовать его IoC и DAO.

Тогда наверное логично было бы уйти от Spring MVC и сделать просто Servlet как одну точку входа ?
PM MAIL   Вверх
jk1
Дата 25.11.2012, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 5
Всего: 75



Цитата

А можно ссылочку на какой нибудь пример ?


http://www.mkyong.com/spring-mvc/spring-3-...d-json-example/

Цитата

Тогда наверное логично было бы уйти от Spring MVC и сделать просто Servlet как одну точку входа ? 

Не вижу тут логики. Раз спринг уже есть, то прикручивайте spring mvc, это будет очень легко. А если все же не хочется, то голые сервлеты использовать не советую - сделать можно, но будет очень уныло и долго. Альтернативой тут будет реализация любая JAX-RS: Jersey, RestEasy, Apache CXF, etc


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
4epT
Дата 27.11.2012, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: 3
Всего: 3



jk1, скажите пожалуйста, а Вы никода не работали с dropwizard ? Или может быть что то слышали о нем ...
PM MAIL   Вверх
jk1
Дата 29.11.2012, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 5
Всего: 75



Нет, не сталкивался с ним


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0472 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.