Day57 :) model1 vs. model2, Servlet

Nux·2021년 12월 14일
0

자바웹개발

목록 보기
69/105
post-thumbnail
post-custom-banner

MVC 패턴

  • 소프트웨어 디자인 패턴으로 Model, View, Controller를 의미
    • Model: DB와 상호작용 등 내부 로직 처리
    • view: 화면 출력 관련
    • Controller: 사용자로부터 입력을 받으면 이를 구분하여 모델/뷰를 업데이트

Model 1

  • view와 controller(요청과 처리)를 JSP에서 모두 구현
    • JSP 페이지에 비즈니스 로직을 처리하는 코드와 HTML 코드가 혼재되어 있음
<p><strong><%=boardDao.userName %></strong>님 환영합니다.</p>
  • 사용자가 직접 view에 접근 가능

model1의 장점

  • 구조가 단순해 개발이 쉬워 개발속도가 빠름. 중소형 프로젝트에 적합

model1의 단점

  • 프로젝트 규모가 커질수록 유지보수가 어려워짐
  • 디자이너와 개발자 간의 협업이 어려워짐

Model 2

  • MVC패턴을 웹 개발에 도입한 구조(model2=mvc패턴)
  • 사용자의 요청을 JSP가 아닌 servlet이 받음
    • servlet이 요청을 받아 이를 view로 보낼것인지 model로 보낼것인지 판단
  • view는 보여지는 부분만 담당하고 model에서 실질적인 기능 부분 전담
  • 사용자가 view에 직접 접근 할 수 없고 반드시 controller를 통해야함

model2의 장점

  • 디자인용과 로직용 자바코드를 분리 시킬 수 있음
  • 디자인과 개발자 간 분업 용이
  • 코드가 간결하여 유지보수가 쉬우며 확장이 간편함

model2의 단점

  • 구조가 복잡함
  • 코드가 분리되며 관리해야 할 파일이 많아짐

Servlet

  • 클라이언트의 요청을 처리하고 결과를 반환하는 자바클래스
  • model2에서 Controller로 이용됨
  • 웹어플리케이션서버가 서블릿의 엔진이자 컨테이너의 역할을 함

HttpServlet

  • Http요청을 처리하는 웹어플리케이션의 부모클래스

주요메서드

void init()

  • HttpServlet객체를 초기화
  • Tomcat이 HttpServlet객체를 생성하면, init() 메서드 실행
  • init() 메서드를 재정의하면 객체생성 후 실행할 작업을 구현 가능

void destroy()

  • HttpServlet객체가 폐기되기 전에 실행되는 메서드
  • HttpServlet에서 사용한 컴퓨터의 리소스를 해제하는 코드를 포함

void service(HttpServletRequest request, HttpServletResponse response)

  • HTTP 요청이 올때마다 실행되어 이를 분석하여 요청 방식 확인
  • 사용자의 요청을 처리하는 코드 직접 작성 가능

void doGet(HttpServletRequest request, HttpServletResponse response)

  • GET 방식 HTTP 요청을 처리하는 메서드이며 데이터를 조회

void doPost(HttpServletRequest request, HttpServletResponse response)

  • POST 방식 HTTP 요청을 처리하는 메서드이며 사용자가 전달한 데이터를 서버에 저장

void doPut(HttpServletRequest request, HttpServletResponse response)

  • PUT 방식 HTTP 요청을 처리하는 메서드이며 서버의 기존 데이터를 수정

void doDelete(HttpServletRequest request, HttpServletResponse response)

  • DELETE 방식 HTTP 요청을 처리하는 메서드이며 서버의 기존 데이터를 삭제

Servlet활용

  • HttpServlet 클래스를 상속받아 service메서드를 재정의
  • HttpServlet 클래스를 요청 URL과 매핑
post-custom-banner

0개의 댓글