Как преобразовать объект ResultSet в вывод формата JSON - PullRequest
6 голосов
/ 03 июля 2011

Я получил ResultSet после запуска запроса. Пожалуйста, дайте мне знать, как я могу преобразовать его в вывод JSON в JSP.

На втором этапе предположим, что у нас есть вывод JSON, как в этой ссылке> http://inknpost.com/eshopping/json.jsp

Доступ к вышеуказанному файлу осуществляется с помощью $ .getJSON (); в другом файле.

Пожалуйста, дайте мне знать, как я могу отображать "имена" и "отделы" в разных строках на странице.

Ответы [ 2 ]

15 голосов
/ 04 июля 2011

Создайте повторно используемый класс Javabean, который представляет одну строку, одну сущность.

public class Category {
    private Long id;
    private String name;
    private String department;

    // Add/generate getters/setters/c'tors/equals/hashcode and other boilerplate.
}

Создайте повторно используемый класс DAO, который сопоставляет ResultSet с коллекцией этих Javabeans обычным способом JDBC.

public class CategoryDAO {
    private static final String SQL_LIST = "SELECT id, name, department FROM category";
    // ...

    public List<Category> list() throws SQLException {
        List<Category> categories = new ArrayList<Category>();

        try (
            Connection connection = database.getConnection();
            PreparedStatement statement = connection.prepareStatement(SQL_LIST);
            ResultSet resultSet = statement.executeQuery();
        ) {
            while (resultSet.next()) {
                Category category = new Category();
                category.setId(resultSet.getLong("id"));
                category.setName(resultSet.getString("name"));
                category.setDepartment(resultSet.getString("department"));
                categories.add(category);
            }
        }

        return categories;
    }

    // ...
}

Создайте класс сервлета, который использует сериализатор / десериализатор JSON, который может конвертировать между произвольной коллекцией Javabeans и строкой JSON, такой как Google Gson .

@WebServlet("/categories.json")
public class CategoriesJsonServlet extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            List<Category> categories = categoryDAO.list();
            String categoriesJson = new Gson().toJson(categories);
            response.setContentType("application/json");
            response.setCharacterEncoding("UTF-8");
            response.getWriter().write(categoriesJson);
        } catch (SQLException e) {
            throw new ServletException("DB error", e);
        }
    }

}

Вызовите это http://localhost:8080/contextname/categories.json.Нет, JSP не задействован.Вы не должны использовать JSP для форматов вывода, отличных от HTML.

Наконец, в jQuery просто получите доступ к нему обычным $.getJSON() способом.

$('#somebutton').click(function() {
    $.getJSON('categories.json', function(categoriesJson) {
        var $table = $('<table>').appendTo($('#somediv'));
        $.each(categoriesJson, function(index, category) {
            $('<tr>').appendTo($table)
                .append($('<td>').text(category.id))
                .append($('<td>').text(category.name))
                .append($('<td>').text(category.department));
        });
    });
});
3 голосов
/ 04 июля 2011

Чтобы создать свой json, вы можете использовать библиотеку google-gson .

Затем, чтобы обработать ваш json в jQuery, это зависит от ваших потребностей, но при условии, что вы хотите показатьих в таблице, вы можете сделать это следующим образом:

HTML:

<table id="mytable">
   <tr> <th> Name </th> <th> Department </th> </tr>
</table>

Javascript:

$.getJSON("your_url", function(categories){
   for(var i=0; i<categories.length; i++){
      var name = categories[i].name;
      var department = categories[i].department;
      $("#mytable").append('<tr><td>'+ name +'</td><td>'+department+'</td></tr>');
   }
});

Надеюсь, это поможет.Приветствия

...