MVC 모델패턴에서 Model 부분 만들기


Model : 컨트롤러(서블릿)에서 database(mysql) 와 관련된 입출력 처리기능을 분리한 개념이다.


우선 MVC 구조를 보자



Model, View, Controller 형태인 MVC 패턴을


 서블릿, DAO, JSP 페이지로 매핑을 하면 아래와 같다.



  다시 책 예제와 매핑을 하면 아래와 같다.


      




흐름에 대한 설명은 책 378 page 참고




DAO 클래스를 만들고 데이터베이스 연동코드를 옮겨둡니다.

[예시) 회원목록 열람기능]

 public List selectList() throws Exception {
    Statement stmt = null;
    ResultSet rs = null;

    try {
      stmt = connection.createStatement();
      rs = stmt.executeQuery(
          "SELECT MNO,MNAME,EMAIL,CRE_DATE" + 
              " FROM MEMBERS" +
          " ORDER BY MNO ASC");

      ArrayList members = new ArrayList();

      while(rs.next()) {
        members.add(new Member()
        .setNo(rs.getInt("MNO"))
        .setName(rs.getString("MNAME"))
        .setEmail(rs.getString("EMAIL"))
        .setCreatedDate(rs.getDate("CRE_DATE"))	);
      }
      return members;
    } 
  }


위 코딩과 같이 DAO클래스 selectList() 함수 호출을 함으로써

데이터베이스 입출력 기능을 구현합니다.


12번째 줄에서 ArrayList 저장공간 [members] 에 


14번~9번 코드에서 값을 저장한후

21번 코드에서 쿼리 결과가 담긴 members 객체를 return 합니다.



그럼 서블릿에서는

request.setAttribute("members", memberDao.selectList());
RequestDispatcher rd = request.getRequestDispatcher("/member/MemberList.jsp");
rd.include(request, response);



1번 라인에서 2번째 파라미터 결과값이

DAO에서 처리결과물이다. 이 결과물을

members 이름으로 request 에 다시 저장합니다.

(view 에서 이 결과값을 사용하기 위해)


그후 페이지 출력을 위해 2,3번 라인에서

include를 request와 response를 인자로 보내고

페이지 결과값을 브라우저에게 보냅니다.















+ Recent posts