성장일기

내가 보려고 정리하는 공부기록

백엔드/스프링 MVC

[Spring MVC] 1. 스프링 MVC 기초 정리 (MVC패턴, 서블릿, WAS) - (1)

와나나나 2024. 3. 28. 00:55
728x90

인프런 김영한 강사님의 스프링MVC 강의를 듣고학습한 내용을 정리한 게시물입니다.

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard

 

김영한 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 강의 - 인프런

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., 원

www.inflearn.com

 

강의를 듣다가 내용이 엉키는 거 같아서 아주 기본적인 부분부터 정리해보려고 한다. 목차는 다음과 같다.

 

  • 웹서버와 웹애플리케이션 서버
  • 서블릿
  • MVC패턴

1. 웹 서버와 웹애플리케이션 서버

 

웹은 HTTP기반으로 돌아간다는 것을 알고있을 것이다. HTTP를 이용하면 이미지, JSON 등 거의 모든 형태의 데이터를 전송할 수 있다. 주고받는 리소스 중에서는 이미지와 같은 정적 리소스도 있지만, 동적 HTML 같은 로직들도 있다.

 

✅ 웹 서버 (Web Server)

웹 서버는 정적 리소스를 제공한다. 예를 들면 정적 HTML, 이미지, 영상같은 !

 

✅ 웹 애플리케이션 서버 (WAS - Web Application Server)

WAS라는 단어는 익숙할 것이다. 웹 애플리케이션 서버는 정적 리소스를 제공하고 추가로 웹 서버 기능도 제공한다. 예를 들면 동적 HTML, JSON, 스프링 MVC같은 !

 

이 둘의 경계는 모호하지만, 서블릿을 사용하면 WAS 라고 생각하면 된다. 

 

그렇다면 서블릿이 무엇일까 ?

 


 

2. 서블릿 (Servlet)

WAS에서는 서버와 클라이언트가 요청과 응답을 주고받는다. request로 클라이언트의 요청을 받고, 처리하여 response로 응답을 전송하는 과정을 거친다. 하지만 이 과정이 이루어지려면 많은 작업을 거쳐야한다.

 

실제로 왼쪽 상자에 써있는 작업들을 모두 해야한다!!!!  막상 의미있는 비즈니스 로직은 저것뿐인데 앞뒤로 해야할 일이 너무 많은 것이다. 저 귀찮은 작업들을 모두 제공해주는 자바 프로그램이 바로 서블릿 (Servlet) 이다.

 

✅ 서블릿 클래스 사용하기

@WebServlet(name = "helloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {

	@Override
    protected void service(HttpServletRequest request, HttpServletResponse response) {
    	// start
    }
}

 

  • urlPatterns : 작성한 URL이 호출되면 서블릿 코드가 실행된다.
  • HttpServletRequest :  HTTP 요청 정보를 사용할 수 있다.
  • HttpServletResponse : HTTP 응답 정보를 사용할 수 있다

 

이렇게 서블릿을 지원하는 WAS를 서블릿컨테이너 라고 한다.

Spring MVC 내부에서 서블릿을 기반으로 웹 애플리케이션이 동작하고, 스프링 부트는 기본적으로 아파치 톰캣이 내장되어있다고 한다.

 

그럼 이제 MVC에 대해 알아보자.

 


3. MVC 패턴

MVCModel, View, Controller 의 약자로 애플리케이션 개발시 사용하는 디자인 패턴이다. 애플리케이션의 개발 영역을 Model, View, Controller로 구분해 역할에 맞게 개발한다. 역할과 구현으로 나누어 개발하기 용이한 자바 개발에서 사용하기 적합한 패턴이라고 생각한다. 각각이 무엇을 의미하는지 알아보자.

 

✅ Model

클라이언트에게서 요청을 받으면 서버는 요청을 처리하여 응답을 보낸다. 이러한 요청사항을 처리하기 위한 구현을 비즈니스 로직이라고 한다. 비즈니스 로직을 거쳐 나온 결과물이 바로 모델이다.

 

 

✅ View

모델을 웹 화면에 보이도록 하는 리소스를 제공한다. 리소스에는 HTML, JSON 등이 있다. 뿐만 아니라 PDF나 Excel로의 변환도 가능하다고 한다.

 

✅ Controller

컨트롤러 요청을 직접적으로 전달받는 부분이다. 그래서 Front Controller 라는 것을 통해서만 요청을 받아 처리하도록 구현한다. 클라이언트 측의 요청을 전달받아 비즈니스 로직을 거친 후, Model 데이터가 만들어지면 이 Model 데이터를 View로 전달하는 역할을 한다.

 

 


다음 게시글에선 스프링 MVC에 대해 작성하려고 한다!