MODEL2 (MVC패턴을 활용한 웹애플리케이션 개발방식)

ggujunhee·2021년 12월 15일
0

MODEL1 & MODEL2 의 차이

표면상 큰 차이는 아래와 같다.
model1 : jsp파일 하나에 html,css,자바스크립트, 자바를 구분없이 섞어서 사용하는 것(디자인요소+로직요소),
model2 : jsp파일에는 html, css같은 디자인요소만 / 데이터는 controller라는 java파일에 분리해서 구현.

model1의 스크립틀릿(<%%>,<%=%>)을 사용하여 값을 불러내고 자바문을 이질적으로 끼워넣어 코드를 복잡하게 만드는 단점을 보완해 유지보수에 도움이 되는 구조가 model2방식이다.

MVC 패턴이란?

Model : view가 표시할 데이터 / 데이터를 획득하는 과정에서 실행되는 자바클래스 전부(vo,dao, service등)

View : model에 포함된 데이터의 표현을 담당. jsp

Controller : 클라이언트의 요청처리를 담당. controller 클래스

MODEL2 (MVC패턴을 활용한 웹애플리케이션 개발방식)

  • 실제프로세스는 자바클래스, 컨트롤러, JSP 3개
  • JSP에는 디자인요소HTML,CSS만 들어가고 업무로직은 컨트롤러에서 생성.
  • 프론트컨트롤러는 개발의 편의성을 높여주기위해 알아서 제공되는 것.
  • 컨트롤러는 특정 작업만(특정클라이언트에 종속) 컨트롤해서 자바클래스와 분리하여 같이 사용함.
  • 클라이언트가 데이터를 소비하는 방법이 다양하면 VIEW가 많아지고 소비하는 접근형태가 다양해지면 CONTROLLER 가 많아진다.
  • 이 모든 작업을 프론트컨트롤러패턴이라고도 부른다.
  • 프론트컨트롤러의 JSP 이동방식, 컨트롤러의 JSP로 데이터로 이동하는방식을 알아야함.
    하지만 우리가 실질적으로 쓰는 것은 (컨트롤러 → JSP) 데이터이동
  • MODEL2개발방식의 특징
    • 디자인요소와 로직요소가 분리된다.
      • VIEW를 담당하는 JSP에서 스크립틀릿, 표현식을 제거할수있다. (EL, JSTL사용)
    • 장점
      • 로직요소의 재사용성이 높아진다.
      • 디자인요소와 로직요소가 분리되었음으로 복잡도가 감소됨.
      • 디자인요소와 로직요소가 분리되었기 때문에 유지보수성이 높아짐.
    • 단점
      • 프로그램의 구조가 복잡해진다.
      • 라이브러리나 프레임워크의 추가 및 설정이 필요하다.

1. 서블릿

  • 클라이언트의 요청을 처리할 수 있는 자바 클래스다.
  • 클라이언트의 HTTP 요청을 처리하는 자바 클래스는 반드시 HttpServlet을 상속받아야 한다.
  • 서블릿을 실행하기 위해서는 서버가 필요하다.
  • 서블릿객체의 생성/유지/관리/폐기, 요청에 대한 적절한 서블릿의 실행을 서버가 담당한다.
  • HTTP 요청을 처리하는 서블릿은 반드시 웹 애플리케이션 서버가 필요하다.
    - Tomcat, jBoss, WebLogic, 제우스 등이 대표적인 웹 애플리케이션 서버 프로그램이다.
    - Tomcat
    1) 웹 애플리케이션 전용 서버다.
    2) HttpServlet/JSP의 생성/유지/관리/폐기, HTTP 요청에 대한 적절한 HttpServlet/JSP의
    실행을 담당한다.
    3) 서블릿/JSP 엔진이다.
    4) 서블릿/JSP 컨테이너다.
    * 컨테이너 : 객체의 라이프사이클을 관리한다. / 객체를 담고 있는 객체다./
    객체에 대한 적절한 유지관리 및 객체의 사용, 객체의 제공 등을 지원한다.

2. HttpServlet

  • HTTP 요청을 처리하는 모든 웹 애플리케이션의 부모 클래스다.
  • 주요 메소드
    void init()
    - HttpServlet객체의 초기화를 담당하는 메소드다.
    - Tomcat이 HttpServlet객체를 생성하면, init() 메소드를 실행한다.
    - init() 메소드를 재정의하면 객체생성된 후 실행할 작업을 구현할 수 있다.
    void destroy()
    - HttpServlet객체가 폐기되기 전에 실행되는 메소드다.
    - HttpServlet에서 사용한 컴퓨터의 리소스를 해제하는 코드를 포함할 수 있다.
    void service(HttpServletRequest request, HttpServletResponse response)
    - HTTP 요청이 올때 마다 실행되는 메소드다.
    - HTTP 요청을 분석해서 요청 방식을 확인하고, 요청방식에 따라서 아래에 나열된 메소드 중 하나를 실행한다.
    - HttpServlet의 service(request, response)의 구현된 기능을 사용하는 대신, service(request, response)를 재정의해서 클라이언트의 HTTP 요청을 처리하는 코드를 직접 작성한다.
    - 요청방식에 따라서 아래의 메소드 중 하나를 재정의하는 것이 아니라, 요청방식에 상관없이 실행되는 service(request, response)를 재정의하는 경우가 흔하다.
    void doGet(HttpServletRequest request, HttpServletResponse response)
    - GET 방식 HTTP 요청을 처리하는 메소드다.
    - GET 방식은 데이터를 조회하는 요청이다.
    void doPost(HttpServletRequest request, HttpServletResponse response)
    - POST 방식 HTTP 요청을 처리하는 메소드다.
    - POST 방식은 클라이언트가 전달한 데이터를 서버에 저장하는 요청이다.
    void doPut(HttpServletRequest request, HttpServletResponse response)
    - PUT 방식 HTTP 요청을 처리하는 메소드다.
    - PUT 방식은 서버의 기존 데이터를 수정하는 요청이다.
    void doDelete(HttpServletRequest request, HttpServletResponse response)
    - DELETE 방식 HTTP 요청을 처리하는 메소드다.
    - DELETE 방식은 서버의 기존 데이터를 삭제하는 요청이다.

사용자정의 HttpServlet 작성하기

  • HttpServlet 클래스를 상속받는다.
  • HttpServlet 클래스의 void service(HttpServletRequest request, HttpServletRespons response) 메소드를 재정의한다.
  • 사용자정의 HttpServlet 클래스를 요청URL과 매핑시킨다.
  • Model2 방식에서 프론트 컨트롤러를 HttpServlet을 상속받아서 작성하는 경우가 많다.
profile
꾸준히 배워가는 블로그입니다.

0개의 댓글