수달이네 기술 블로그

MVC패턴에 대해 본문

공부/용어공부

MVC패턴에 대해

슬픈 수달이 2025. 10. 10. 21:53

웹서버와 WAS서버

1. 클라이언트와 서버의 요청과 응답

클라이언트(사용자, 브라우저)와 서버(서비스 제공자)가 서로 대화 하듯이 데이터를 주고 받는다

클라이언트: 서버주소(www.naver.com) 등 결과물을 요청하는 쪽

서버: 결과물을 보내주는 쪽

2. 왜 인터넷에선 요청과 응답 방식을 쓸까?

HTTP 를 사용하기 때문

  • 클라이언트와 서버가 어떻게 통신할지 정해놓은 규칙으로 누구든 브라우저만 있으면 어떤 서버와도 대화할 수 있다.
  • 요청(Request)와 응답(Response)를 사용

3. 웹서버(HTTP Web Server)

웹 어플리케이션을 실행하기 위한 서버

클라이언트가 보낸 요청이 정적인 컨텐츠를 요구하는지 동적인 컨텐츠를 요구하는지 구분한다.

정적인 컨텐츠를 요청한다면 미리 준비한 웹 문서를 response에 담아 보내주지만

동적인 컨텐츠를 요청할때 처리할 수 없다.

  • 정적: 항상 동일한 화면을 보여줌(이용 약관 페이지, 회원가입 페이지 등)
  • 동적:사용자, 데이터베이스에 따라 다른 화면을 보여줌(내정보, 게시판 페이지 등등)

자바에서 사용하는 웹서버는 대표적으로 Apache가 있음

4. WAS(Web Application Server)

웹서버와 동일하게 웹 어플리케이션을 실행하기 위한 서버로, 웹 컨테이너(서블릿 컨테이너)라고도 불린다.

웹서버와 다르게 정적, 동적 컨텐츠를 모두 처리할 수 있다.

단,. 정적 컨텐츠 처리는 웹서버에 비해 성능은 떨어진다.

  • 동적 컨텐츠를 처리하기 위해 여러 연산 및 DB 접근을 수행하여 JAVA를 이용하기 때문

자바에서 이용하는 WAS는 Tomcat이 있음.

5. 아파치 톰캣(Apache tomcat)

WAS로 분류되나, Apache와 Tomcat을 합쳐놓은 형태

즉, 일반적인 WAS와 달리 web server를 포함하고 있다.

아파치 톰캣의 웹서버는 정적 요청을 처리하며 동적인 요청이 들어왔을 때 웹 컨테이너에게 요청을 전달한다.

그러면 웹 컨테이너는 동적 컨텐츠를 처리하여 웹서버에게 응답을 보내준다.

일반적으로 자바는 요청과 응답을 처리할 수 없다.

  • 따라서 자바는 서블릿(Servlet)이라는 것을 사용하여 서블릿 컨테이너를 만든다.

MVC패턴

0. MVC?

MVC = Model, View, Controller 의 약자

역할을 나누어 프로그램을 더 깔끔하고 유지보수하기 쉽게 만드는 방법

Model(M): 데이터, 로직 담당

  • DB 접근, 비즈니스 로직, 계산 등

View(V):화면, 사용자에게 보여지는 부분

  • HTML, JSP, 프론트엔드 코드

Controller(C): 사용자의 요청을 받아서 Model과 VIew를 연결해주는 역할

  • 서블릿, 스프링 컨트롤러

MVC model 1

옛날 jsp 개발에서 많이 사용하던 방식

JSP 하나가 Controller+View역할을 동시에 담당

JSP 안에서→ 화면출력(View) + 로직처리(Controller, Model 일부) 전부 작성

장점: 간단하다, 작은 프로젝트에 빠르게 쓸 수 있다.

단점: JSP파일이 너무 커지고 복잡해짐 → 유지보수가 어렵다

  • [사용자]→JSP( 요청처리+DB접근+화면출력)→[결과화면]

MVC model 2

서블릿과 JSP역할 분담해서 사용(진짜 MVC 구조와 가깝다)

Controller(서블릿): 요청을 받아서 처리할 로직을 결정

  • Model 에게 일을 시킴

Model(자바 클래스,. DAO, Service): DB연결, 데이터 처리, 비즈니스 로직 담당

View(JSP): Controller가 넘겨준 결과를 화면에 출력

  • [사용자]→ Controller(서블릿)→ Model(DB처리, 로직)→ View(JSP, 화면 출력)

MVC초기 vs MVC2 패턴

MVC패턴 MVC패턴(초기) MVC2패턴
View역할 JSP가 모든 처리 JSP는 화면 출력 전용
Controller 없음 또는 JSP자체가 흐름 처리 Servlet이 흐름 관리
구조적 특징 JSP가 비대해짐 역할이 명확히 나뉨
(JSP: VIew. Servlet:Controller)
장점 빠르게 만들 수 있음 유지보수 용이
단점 유지보수 불편, 거의 쓰지 않음 역할이 나뉘어져 있으므로 제대로 역할대로 구현하지 않으면 안됨.
실무사용 거의쓰지 않음 실무 대부분 사용함.

 

'공부 > 용어공부' 카테고리의 다른 글

1. OLTP와 OLAP  (2) 2025.03.07
0. 데이터베이스의 용어 시작 + DBMS  (0) 2025.03.07