Передача данных из сервлета в код 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));
}
Другие вопросы по тегам