Для отправки JSON обратно клиенту я успешно использую следующее решение:
1) клиент (браузер) отправляет запрос AJAX POST, содержащий значения в формате JSON (но GET также возможен), на мой контроллер SpringMVC.
$.postJSON("/login", login, function(data)
{
checkResult(data);
});
2) Подпись метода контроллера SpringMVC:
@RequestMapping(value = "/login", method = RequestMethod.POST)
public @ResponseBody Map<String, String>
login(@RequestBody LoginData loginData,
HttpServletRequest request, HttpServletResponse response)
@ ResponseBody - это ключ, он "... указывает, что возвращаемый тип должен быть записан прямо в тело ответа HTTP(и не помещается в модель, или интерпретируется как имя представления). "[Spring Reference Doc] LoginData - это простой контейнер POJO для значений JSON из клиентского запроса, который заполняется автоматически, если вы вставляете файл jar jar (я использую jackson-all-1.7.5.jar) в ваш путь к классам.В результате метода контроллера я создаю hashMap,(например, с ключами «ошибка» или «просмотр» и соответствующими значениями).Затем эта карта автоматически сериализуется в JSON, который интерпретируется клиентом (опять обычная HTML-страница, включая Javascript)
function checkResult(result)
{
if (result.error)
{
// do error handling
}
else
{
// use result.view
}
}