자바 풀스택 교육/Spring

MVC 교육정리 2일차

JD재버워키 2020. 1. 21. 09:04

예제 순서

- 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라고 함