하나의 행, 단일 엔티티를 나타내는 재사용 가능한 Javabean 클래스를 작성하십시오.
public class Category {
private Long id;
private String name;
private String department;
// Add/generate getters/setters/c'tors/equals/hashcode and other boilerplate.
}
그 자바 빈즈의 모음 일반적인 JDBC 방식에
ResultSet
매핑하는 재사용 가능한 DAO 클래스를 만듭니다.
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;
}
// ...
}
는
Google Gson로, 자바 빈즈의 arbirary 수집과 JSON 문자열 사이의 변환을 할 수있는 JSON 시리얼 라이저/디시리얼라이저를 사용하는 서블릿 클래스를 만듭니다.
@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가 없습니다. HTML이 아닌 출력 형식에는 JSP를 사용하지 않아야합니다.
마지막으로 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));
});
});
});
너무 깨끗하고 체계적인 코드를 주셔서 감사합니다 – skystar7
@ BalusC 훌륭한 솔루션, stackoverflow 당신 없이는 동일하지 않을거야! :) –