[꼼꼼한 개발자] 꼼코더
[서블릿 개념 핥기] - 04 - MVC 패턴 적용(이론) (한 번에 이해할 수 있는 글) 본문
🏛 MVC 패턴 적용 이전 구현 방식
- JSP 파일로 처리하는 방식
- JSP요청 → JSP에서 처리 → 응답
- JSP요청 → JSP에서 처리 → redirect응답
- JSP요청 → JSP에서 처리 → forward(다른 JSP요청) → 다른 JSP에서 처리 → 응답
- Servlet으로 처리하는 방식
- URL요청 → Servlet에서 처리 → 직접 응답
- URL요청 → Servlet에서 처리 → redirect응답
- URL요청 → Servlet에서 처리 → forward(JSP선택) → 처리 → 응답
- MVC 패턴
- JSP에서 MVC 패턴을 구현하는 방법은 명확하게 정해진 것은 아님
- 다시 말 해 순수 MVC는 모든 패턴을 직접 구현해야 한다. 따라서 사람마다 구현 방식이 다르다
🌊 JSP에서 MVC패턴 흐름
- 웹 브라우저에서 요청을 한다. Request가 서버에 들어온다.
- 서블릿 중에서 만들어 놓은 서블릿이(컨트롤러 역할)가 요청을 받는다.
- 컨터롤러는 요청이 무엇인지 확인을 하고 그 요청에 맞는 비즈니스 로직을 처리를 한다. 이때 ‘모델’을 사용한다고 보면 된다.
- 모델은 컨트롤러의 요청을 받고(메소드 호출이라고 보면 된다) 그 요청을 처리를 한다.
다시 말해 기능적인 부분을 처리한다. 이때 필요하다면 외부 자원을 호용 한다(DB 등) - 처리된 결과를 return 한다.(메서드 이기 때문)
- 돌아간 결과는 request객체 또는 session객체에 결과 데이터를 유지
- 유지된 데이터를 가지고 JSP가 처리될 수 있게끔 View라는 걸 선택하게 된다.
- 결국 JSP파일을 선택하고 요청을 그대로 전달하면 tomcat에서 선택한 JSP 파일을 'JSP파일 처리 방식(01번 글 참고)'으로 처리한다.(JSP 파일 → 자바 코드 변환)
👨🏻🏫 자세한 설명(중복되는 내용이 많으니 넘어가도 된다.)
클라이언트의 최초 요청을 받는 건 컨트롤러 역할을 하는 Servlet이다.
결과를 보여주는 View(JSP 파일)도 결국 Forwarding을 받아서 요청을 전달받아서 처리할 Servlet이다.
그래서 Servlet을 생성하고 해당 Servlet을 가지고 컴파일하고 객체를 생성한다.
처리가 끝나면 request객체 또는 session객체에 유지됐던 값을 이용해서 표현식을 통하여
<% /%> 같은 걸 사용하여 브라우저에 응답할 HTML문서 등을 만들어 낸다.
이것이 나중에는 Rest API (클라이언트에 관계없이 정해진 형태로 데이터를 줄 수 있는 형식으로 XML 형식, JSon형식) 방법으로
데이터를 응답하기도 한다.
지금 우리는 JSP파일이 처리돼서 HTML 코드 형태로 응답 데이터를 만든다.
그때 이 표현식들의( <% /%> 결과 데이터들이 표시가 된다.
그렇게 표시된 결과물을 클라이언트 측에 응답해 준다.
여기까지가 MVC에 큰 흐름이다
🧹 정리
MVC 패턴을 사용하게 되면
비즈니스 로직이 수정되고 추가하고 싶으면 모델 영역만 수정
디자인 수정, 레이아웃등이 수정된다면 뷰 영역만(JSP 파일) 수정
새로운 기능이 추가되면 요청을 분석하는 과정을 수정해야 하니 컨트롤러 부분에만 수정해 주면 된다.
이전에는 JSP파일 하나안에
화면에 보일 내용, 처리하는 내용, 외부 자원 연동하는 내용이 다 있었는데
이럴 때는 규모가 큰 애플리케이션에는 불편하하다
이렇게 역할에 맞게끔 분할해서 결합도를 낮춰서 개발하는 방법이 MVC패턴이라고 한다.
위 글은 'IT 핥기' 유튜버 님의 영상을 참고하여 작성하였습니다. https://www.youtube.com/@ithotgi
'Servlet, JSP > 개념 핥기' 카테고리의 다른 글
[서블릿 개념 핥기] - 05 - MVC 패턴 적용(실습) (한 번에 이해할 수 있는 글) (0) | 2023.01.11 |
---|---|
[서블릿 개념 핥기] - 03 - JSP, Servlet의 활용 (한 번에 이해할 수 있는 글) (0) | 2023.01.10 |
[서블릿 개념 핥기] - 02 - 서블릿이란? + 실습 (한 번에 이해할 수 있는 글) (2) | 2023.01.10 |
[서블릿 개념 핥기] - 01 - JSP란 무엇인가?(한 번에 이해할 수 있는 글) (0) | 2023.01.10 |