Передача данных из сервлета в код javascript в приложении Ajax?
У меня есть простое приложение jsp/servlet, и я хочу добавить функцию AJAX в это приложение. Я использую JQuery, но неважно, какую инфраструктуру javascript я использую. Это мой код:
<script type="text/javascript">
function callbackFunction(data){
$('#content').html(data);
}
$('document').ready(function(){
$('#x').click(function() {
$.post('/ajax_2/servlet',callbackFunction)
});
});
</script>
<body>
<a href="#" id="x">Increase it</a>
<div id="content"></div>
</body>
</html>
сервлетов
HttpSession session = request.getSession();
Integer myInteger = (Integer)session.getAttribute("myInteger");
if(myInteger == null)
myInteger = new Integer(0);
else
myInteger = new Integer(myInteger+1);
session.setAttribute("myInteger", myInteger);
response.getWriter().println(myInteger);
Вопрос:
Я использую out.print для передачи данных из сервлета в код javascript (ajax-код), но если у меня есть сложная структура, такая как Вектор объектов или что-то вроде этого, что является лучшим способом передачи данных? как насчет файла XML, JSON? Есть ли специальная библиотека jsp/servlets для передачи данных из сервлета в приложение ajax? Как я могу проанализировать эти данные в callbackFunction?
Ответы
Ответ 1
Лучший способ - использовать JSON. Существует несколько библиотек Java, которые могут преобразовывать полноценные объекты Java в строку JSON и наоборот. Дальнейший доступ JSON можно получить в Javascript совершенно естественным образом без преобразования/массирования данных вперед и назад в другом формате.
Что касается части сервера, я настоятельно рекомендую выбрать Google Gson как сериализатор JSON. Gson является предпочтительным выбором, поскольку он поддерживает преобразование сложных Javabeans и массивов, коллекций и карт их в JSON и наоборот без проблем в одной строке кода. Он даже поддерживает дженерики. В основном все, что вам нужно сделать, это следующее:
String json = new Gson().toJson(object);
Ознакомьтесь с руководством пользователя чтобы узнать больше о возможностях Gson.
Все со всеми, на стороне сервера достаточно:
public static void writeJson(HttpServletResponse response, Object object) throws IOException {
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(new Gson().toJson(object));
}