2011-07-03 6 views
6

쿼리를 실행 한 후 ResultSet을 얻었습니다. 친절하게도 JSP로 JSON 출력으로 변환 할 수있는 방법을 알려주세요.ResultSet 객체를 JSON 형식 출력으로 변환하는 방법

두 번째 단계에서

, 우리는이 링크에서 같은 JSON 출력을 가지고 있다고 가정 할 수 있습니다>http://inknpost.com/eshopping/json.jsp

위의 파일이 (A $ .getJSON에 의해 ​​액세스되는); 다른 파일에서.

"이름"과 "부서"를 페이지의 다른 행에 어떻게 표시 할 수 있는지 알려 주시기 바랍니다.

답변

15

하나의 행, 단일 엔티티를 나타내는 재사용 가능한 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)); 
     }); 
    }); 
}); 
+2

너무 깨끗하고 체계적인 코드를 주셔서 감사합니다 – skystar7

+3

@ BalusC 훌륭한 솔루션, stackoverflow 당신 없이는 동일하지 않을거야! :) –

3

json을 만들려면 google-gson 라이브러리를 사용할 수 있습니다.

HTML :

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

그런 다음, jQuery를에 JSON을 처리하기 위해, 그것은 당신의 필요에 따라,하지만 당신은 테이블에 그들에게 보여주고 싶은 가정, 당신은 그것을 다음과 같은 방법을 할 수

자바 스크립트 :

$.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>'); 
    } 
}); 

희망이 있습니다. 환호

관련 문제