모델 1 방식
DAO를 호출하여 비즈니스로직을 수행하고.
수행결과를 브라우저로 출력하는 역할을 모두 JSP가 수행하는것.
모델 2 방식
웹 어플리케이션의 메인 기능인 요청 처리, 화면 기능, 비즈니스 로직을 분리하여 구현하는 방식.
MVC 패턴
모델 2 방식의 디자인 패턴 중 가장 많이 활용되는 디자인 패턴
Model : 데이터베이스와 비즈니스로직을 위한 것. DAO와 VO로 구성됨.
View : 비즈니스로직 수행결과를 구현하여 브라우저로 출력하는 것은 JSP가.
Controller : 클라이언트의 요청을 받아 분석. 필요한 모델 호출하여 결과 처리. 최종 결과는 View 에게 포워딩.
기능
구현 파일
1. 회원 목록 출력
커넥션풀을 이용해 연결을 받아올 때 사용하는 DataSource 객체 생성 해놓는 역할.
DataSource로 연결 받아오고. select 쿼리문 수행하여 결과셋 반환.
request.getpathInfo() 함수를 통해 url에서 / 이후의 값을 가져오며, 가져온 값에 따라 어떤 기능을 수행할지 결정.
nextPage라는 문자열을 도입하여 dispatch로 다음 표시할 페이지 결정.
action이 listMembers.do라면. DAO의 listMembers 함수를 통해 arraylist 결과 가져와 request에 속성으로 추가하고. listMembers.jsp 에게 포워딩.
listMembers.jsp는 ${변수명}으로 arraylist를 사용하며. 순회하며 회원 정보 출력.
다음과 같이 회원정보가 출력됨
수정과 삭제는 클릭시 get방식으로 Controller에게 id 전달 및 수정/삭제 요청을 하게된다.
회원 가입하기는 누를시 Controller에게 회원 가입 요청을 하게됨.
2. 회원 가입
회원 가입하기를 누른다면 컨트롤러는 memberForm.jsp로 디스패치해주어. 회원가입 정보 입력창이 뜨게된다.
memberForm.jsp는 사용자에게 정보를 입력받고. 컨트롤러에게 Post방식으로 전달한다.
컨트롤러는 VO객체를 생성하여 memberForm.jsp에게 받은 데이터를 저장하고. 이를 매개변수로 넘겨주어 DAO의 addMember메소드를 수행한다.
DAO는 위와 같이 Insert를 수행하며. nextPage로 listmembers.do로 포워딩 해주었기에 회원목록조회 기능이 수행된다.
3. 회원 수정
회원 목록 조회에서 수정을 누르면 컨트롤러에게 id를 보내며 처리요청을 하게된다.
컨트롤러는 해당 Id를 갖는 투플을 VO객체로 저장하여 반환하는 DAO의 findMember를 호출하고. VO객체를 바인딩하여 JSP로 포워딩한다.
(수정하기 전 내용을 갖고. 수정 후 내용을 입력받기 위해서)
jsp는 수정할 내용을 입력받고 컨트롤러에게 post방식으로 전달한다.
컨트롤러는 DAO에서 UPDATE 쿼리문을 사용하여 데이터를 갱신하고 nextpage로 회원목록조회 창을 표시한다.
회원 삭제
회원 목록 조회에서 삭제를 누르면 컨트롤러에게 id를 보내며 처리요청을 하게된다.
컨트롤러는 DAO에서 Delete 쿼리문을 통해 투플을 삭제하고 회원목록조회 창을 표시한다.