MVC 패턴

  • 모델2 개발방식이라고도 부른다
  • Model
    • View가 표시할 데이터, 혹은 데이터를 획득하는 과정(업무로직, DB 엑세스 작업)에서
      실행되는 자바 클래스
      를 일컫는다.
      (vo, dao, dto, service 등)
  • View
    • Model에 포함된 데이터의 표현을 담당한다 (jsp)
  • Controller
    • 클라이언트의 요청처리를 담당한다
    • 클라이언트의 요청방식에 따라 다양한 컨트롤러가 존재할 수 있다
    • 컨트롤러는 특정 클라이언트의 요청에 종속적이다
    • public void execute(HttpServletRequest request, HttpServletResponse response) { … }
    • 위에 정의된 메소드는 프론트컨트롤러로부터 요청객체, 응답객체를 전달받아서 클라이언트의 요청을 처리하는 메소드다
  • Front controller
    • 서블릿(HTTP 요청을 처리할 수 있는 자바클래스)로 제작

MVC 개발 방식의 특징

  • 디자인요소와 로직요소가 분리된다
  • view를 담당하는 jsp에서 스크립틀릿, 표현식을 제거할 수 있다 (EL, JSTL 사용)
  • 장점
    • 로직의 재사용성 높아짐
    • 디자인요소, 로직요소가 분리되어 복잡도 감소
    • 유지보수성이 높아짐
  • 단점
    • 프로그램의 구조가 복잡해짐
    • 라이브러리나 프레임워크의 추가 및 설정이 필요함

Servlet

  • Http 요청을 처리할 수 있는 자바 클래스 (웹 개발을 위해 만든 표준)
  • 클라이언트의 HTTP 요청을 처리하는 자바클래스는 반드시 HttpServlet을 상속받아야 한다
  • 서블릿을 실행하기 위해서는 서버가 필요하다
  • 서블릿의 생성/유지/관리/폐기, 요청에 대한 적절한 서블릿의 실행을 서버가 담당한다

HttpServlet

  • HTTP 요청을 처리하는 모든 웹 애플리케이션의 부모 클래스
  • 주요 메소드
    • void init()
      • HttpServlet 객체의 초기화를 담당한다
      • Tomcat이 HttpServlet 객체를 생성하면 init() 메소드를 실행한다
      • 성공적으로 init() 메소드가 호출되었다면 service() 메소드를 수행해서 클라이언트의 요청을 수행한다
    • void destroy()
      • 서블릿 객체가 더이상 서비스를 하고 있지 않는 경우 호출된다
        (서블릿이 메모리로부터 제거)
    • void service(HttpServletRequest request, HttpServletResponse response)
      • Http 요청이 올 때마다 실행되는 메소드다
      • Http 요청을 분석해서 요청 방식을 확인하고, 요청방식에 따라서 메소드를 실행한다
      • 요청 방식에 따라 아래에 나열된 네가지 메소드를 호출한다(주로 doGet, doPost를 사용)
      • 주로 재정의되어 사용된다
    • void doGet(HttpServletRequest request, HttpServletResponse response)
    • void doPost(HttpServletRequest request, HttpServletResponse response)
    • void doPut(HttpServletRequest request, HttpServletResponse response)
    • void doDelete(HttpServletRequest request, HttpServletResponse response)

프론트 컨트롤러(Servlet)

  • 모든 요청을 .hta로 받아온다
  • 요청을 접수하고, 요청에 해당하는 적절한 컨트롤러를 실행한다
  • 요청에 상응하는 jsp로 이동한다 image image

컨트롤러

  • 요청 하나당 컨트롤러가 필요하기 때문에 많은 컨트롤러가 필요할 수 있다
  • 실질적인 요청 처리를 담당한다 image