Передача данных из сервлета в код JavaScript в приложении Ajax?
У меня есть простое приложение jsp/servlet, и я хочу добавить функцию AJAX в это приложение. Я использую JQuery, но не имеет значения, какой фреймворк я использую. Это мой код:
<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>
Servlet
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), но если у меня сложная структура, такая как Vector of Objects или что-то в этом роде, каков наилучший способ передачи данных? как насчет XML- файла, JSON? Существует ли какая-либо специальная библиотека jsp/servlets для передачи данных из сервлета в приложение ajax? Как я могу проанализировать эти данные в callbackFunction?
1 ответ
Лучший способ - использовать JSON. Существует несколько библиотек Java, которые могут преобразовывать полноценные объекты Java в строку JSON и наоборот. Кроме того, JSON может быть доступен в Javascript полностью естественным способом без преобразования / массирования данных вперед и назад в другом формате.
Что касается серверной части, я настоятельно рекомендую в качестве сериализатора JSON выбрать Google Gson. 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));
}