MVC 교육정리 2일차
예제 순서
- MyController2.java package ex2
- korea.jsp china.jsp japan.jsp
- MyController3.java package ex3
- hello.jsp
- HelloCommand.java
- ip.jsp
- IpCommand.java
- dept.jsp
- DeptCommand.java
- ActionCommand.java(인터페이스)
- index.jsp
- time.jsp
- TimeCommand.java
- index.jsp => InsertDeptCommand.java => form.jsp
- form.jsp => InsertDeptOkCommand.java
- index.jsp => DeleteDeptFormCommand.java => deleteForm.jsp
- deleteForm.jsp => DeleteDeptCommand.java
- project mvcboard Create
ㅇ package kr.co.scott.control, kr.co.scott.action. kr.co.scott.dao, kr.co.scott.dto
- MyController.java package kr.co.scott.control
- ListAction.java package kr.co.scott.action
오늘 공부 한 것
- 컨트롤러는 어떤 뷰와, 모델을 연결 할지에만 집중
- 뷰가 장착된 컨트롤러에 모델을 부착 예제) MyController3.java
ㅇ 모델(액션클래스) 객체 생성 예제) HelloCommand.java, hello.jsp, IpCommand.java, ip.jsp
ㅁ 비즈니스 로직을 처리하는 역할(업무처리)
ㅇ 모델에서 데이터베이스에 접근하여 데이터 받기
ㅁ 뷰에서 request값을 el 및 jstl forEach를 통해 향상된 for문처럼 데이터 꺼내기
예제) DeptCommand.java, dept.jsp
ㅇ 액션클래스를 인터페이스로 생성 예제) ActionCommand.java
ㅁ 각 액션 클래스 구현화(implements) 및 Override
ㅁ 컨트롤러 액션클래스 인터페이스를 통해 코드 간결화
ㅇ index페이지에서 현재까지 생성한 페이지 a태그로 접근 예제) index.jsp
ㅇ 컨트롤러와 모델을 활용하여 뷰에 현재 시간을 출력 예제) TimeCommand.java, time.jsp
ㅇ 모델을 통해 데이터베이스 데이터를 INSERT
ㅁ index.jsp에서 입력 페이지로 이동(컨트롤러를 거쳐 모델로 이동)
예제) InsertDeptCommand.java, form.jsp
ㅁ 데이터 입력 페이지에서 form을 통해 파라미터값을 컨트롤러를 거쳐 모델로 전달
주의사항 : form은 action에서 쿼리스트링을 전달하지 않는다.
예제) InsertDeptOkCommand.java => index.jsp
ㅇ 모델을 통해 데이터베이스 데이터 1건 삭제
ㅁ index.jsp에서 부서번호 삭제 페이지로 이동
ㅁ 컨트롤러에서 전달된 파라미터값에 해당하는 모델로 이동
ㅁ 모델에서 삭제 Form 페이지로 이동 예제) DeleteDeptFormCommand.java
ㅁ Form페이지에서 컨트롤러로 모델의 인식 파라미터와 데이터 삭제번호 전달
예제) package ex3 deleteForm.jsp
ㅁ 컨트롤러에서 파라미터에 해당하는 모델로 이동 예제) DeleteDeptCommand.java
ㅁ 모델에서 데이터베이스 접근 삭제 로직 처리 후 index.jsp로 이동
- mvc 게시판 생성(새 프로젝트)
ㅇ 패키지 회사 도메인 주소를 거꾸로해서 생성
(kr.co.scott.Action, kr.co.scott.control, kr.co.scott.dao, kr.co.scott.dto)
ㅇ 컨틀롤러 서블릿 생성 예제) package kr.co.scott.control MyController.java
ㅁ HttpServlet 상속
ㅁ do Get, do Post 오버라이드 => 둘다 사용하기 위해 doProcess 메서드 생성
ㅁ @WebServlet(클라이언트 요청 키워드) 주의사항 : / 빼먹을 경우 톰캣 실행 안 됨
ㅁ req, resp 한글처리
ㅁ 모델을 구분 할 키워드 파라미터를 담을 cmd 변수 생성
ㅁ 이동 할 뷰의 주소를 담을 url 변수 생성
ㅁ 전달된 모델을 구분 할 파라미터에 해당하는 모델 객체를 생성
ㅁ execute메서드를 통해 요청객체와 응답객체를 전달하고 리턴 값으로
모델에 해당하는 뷰의 주소를 받음.
=> 각 모델마다 동일한 메서드로 동작하기 때문에 Action 인터페이스 생성
execute를 추상메서드로 구현(abstract 생략 가능)
ㅁ 모델의 execute가 리턴하는 주소값을 url 변수에 담는다.
ㅁ url 주소를 RequestDispatcher 객체를 사용하여 주소값을 담고
forward방식으로 해당 뷰(페이지)로 이동한다.
ㅇ 모델 생성 예제) package kr.co.scott.action
ㅁ action 인터페이스 구현화 클래스(execute 메서드 오버라이드) 예제) ListAction.java
ㅁ 게시판 목록 데이터 전체 조회를 위한 비즈니스 로직 처리
ㅁ 요청 객체에 데이터 담아 보내기
ㅁ 뷰의 주소를 문자열로 리턴
ㅇ 뷰 생성
ㅁ 보안을 위해 뷰 파일은 여러겹의 폴더로 감싸서 활용한다.
ㅁ 게시판 게시글 목록을 보여줄 list를 생성 예제) package views list.jsp
ㅁ JSTL forEach를 향상된 for문처럼 사용(var, items) 테이블내에
데이터를 나열
ㅇ DAO와 DTO 생성 예제) package kr.co.scott.dao, kr.co.scott.dto
ㅇ 분리시켜서 향후 유지보수의 이점이 있다.
복습 할 것
- 오라클 설정 (메모장에 권한을 주소 실행해서 수정)
- 인터페이스 복습
- calander 클래스 복습
- RequestDispatcher 복습
tip.
tip. @webservlet(요청키워드)가 다른 서블릿과 같을 경우 오류 발생
tip. 회사에 이력서는 가리지말고 넣어라.
용어
- vo(value object) , 자바빈 , DTO(MVC)
- MVC에서 데이터를 모델 뷰 컨트롤 왔다 갔다 할 때 값을 옮겨주는 객체라고 해서
MVC에서만 DTO라고 함