MVC 관련해서 공부하다가 왜 ? MVC가 생겨난거야..? 라는 궁금증을 가지고 이것저것 찾아서 공부해 보다가
역사가 재미있어서 포스팅을 해놓기로 했다. 궁금하다면 아래 동영상을 보길 바란다!
(역시 뭘 공부해도 이게 왜? 만들어진 거야..라는 궁금이 항상 강해서... 이런 식으로 공부해야지 더 흥미가 생기는 것 같다..)
💻 웹 개발 진화과정
1. Servlet
자바기반의 동적 웹 앱을 개발할때 사용하는 핵심 기술이며! Servlet에 HTML 코드를 넣었다...
근데...음...HTML 표현이 매우 번거롭고 까다로웠다! 실제로 세미프로젝트를 시작하기 전에 servelt공부를 했었는데, 그때 스스로 ' 와.... 이걸 왜 이렇게 해?'라고 생각하면서 했던 기억이 있다. (이전에 작성한 포스팅도 같이 첨부하겠다)
[Servlet] 설명 및 순서 정리
📌Servlet : 웹 서비스를 위한 자바 클래스 ex) action='주소' - 웹 프로그래밍에서 클라이언트의 요청(Request)을 처리하고 그 결과를 다시 클라이언트에게 응답(Response)하는 Servlet클래스의 구현 규칙을
jnaa.tistory.com
그래서 등장한 JSP!
2. JSP
서블릿과 반대로 HTML코드에 자바 코드를 포함시켜 동적웹을 구성하였다! HTML에 JAVA 코드를 넣었다.. 서블릿과 반대의 개념으로 등장! 편하긴 한데 HTML, JAVA코드가 합쳐져서 수 백 줄의 코드가 뒤엉키는 상황이 발생한다.
이제 JAVA에 HTML을 넣는 것도 아니고 HTML에 JAVA를 넣는것도 아닌 따로 분리를 하자라는 의견이 나옴!
3. 서블릿 + JSP, MVC 패턴
Servelt과 JSP를 섞어서 사용하기 시작함
세미 프로젝트로 서블릿과 JSP를 이용해서 프로젝트를 진행을 했다!
(솔직히 이때는 이게 뭔지 저게 뭔지도 모르고 했는데... 공부를 하다 보니 오..이래서 했구나라는 궁금증 해결! 😎)
이전에 Servlet과 JSP과 다르게 비즈니스 로직은 서블릿 같은 다른 곳에서 처리하고 JSP는 목적에 맞게 HTML화면만 그리는 거 어떨까?라는 생각으로 MVC 패턴 탄생!
모델 뷰 컨트롤러로 나눠 프로젝트 로직과 화면에 렌더링 하는 부분을 분리하기 시작!
즉! MVC는 Servlet과 JSP로 처리했던 것들은 Controller / View라는 영역으로 역할을 나눠 처리하도록 했다!
- 컨트롤러(Controller) : HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행하고, 뷰에 전달할 결과 데이터를 조회해서 모델에 담는다
- 모델(Model) : 뷰에 출력할 데이터를 담아두면서, 화면을 렌더링 하는 일을 한다.
- 뷰(View) : 모델에 담겨있는 데이터를 화면에 출력하는 것으로 HTML을 생성하는 부분을 말한다.
4. MVC 프레임워크 (춘추 전국시대)
MVC패턴은 '패턴' 그 이상도 그 이하도 아니었다. 수많은 개발자들의 자신만의 프레임워크로 개발하기 시작했다!
그러면서 동일한 패턴이 필요하니까 Spring이 나오지 않았을까라는 추측이...
4. Spring MVC
MVC 프레임워크 때 아주 좋은 기술인 @(어노테이션) 기반 스프링 MVC가 탄생!
@기호 하나만으로 MVC 패턴을 구성한 개발자들에게 봄이 찾아옴!
5. Spring Boot
근데 여기서 멈추지 않고 개발자들에게 좀 더 따뜻한 봄을 가져다주세요!
바로 WAS가 직접설치와 실행하지 않고 내장을 해 한방에 해결!
간단하게 정리를 해봤는데, 실제로 사용자가 보는 화면은 똑같은데.. 이렇게 달라지는게 너무 신기했고,
이전에는 왜 ? 이렇게 하는거야..? 왜 이렇게 ..? 라는 궁금증이있었는데 드디어... 풀렸다!
재미있지만 어렵고 재미있는 세계다!
'ON > 개발지식' 카테고리의 다른 글
[ 개발지식] JUnit이란 ? 음 그럼 단위테스트 란 ? (0) | 2023.11.10 |
---|---|
[개발지식] 모호한 개념인 인터페이스를 쉽게 정리해보자 ! 인터페이스란 무엇인가 ? (1) | 2023.11.08 |
빌드, 웹배포하기 (0) | 2023.10.04 |
REST API 란 ? (0) | 2023.09.12 |
[깃허브] 조원들과 프로젝트 공유하기 (0) | 2023.07.06 |