ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] MVC 패턴
    Spring 2025. 3. 29. 19:33

    기본 서버 동작 과정

    사용자는 웹브라우저에게  구글 사이트에 들어가서 'Servlet이 뭔데?'라는 검색한 결과를 요청(HTTP Request, API 요청)한다. 서버는 내부에서 Servlet이 가진 모든 데이터를 조회하여 웹브라우저 HTML 화면에 연결해줄 모든 데이터를가져와 화면에 표시한다.

     

    서버는 어떤 방식으로 사용자의 요청을 처리하는가? 

     

    Servlet은 왜 나왔는가?

    Servlet 단독 처리

    Servlet 

     

    Java를 사용한 웹 개발의 시초로, 서버에서 동적으로 콘텐츠를 생성하기 위해 사용되었다. 클라이언트의 요청을 받고, 그에 대한 응답을 생성하는 기본적인 구조를 제공했다.

     

    문제점

    • 화면을 그리는 View 영역비지니스 로직Servlet 하나에 모두 섞여있다.
    • 모든 기능을 하나의 클래스들에서 처리하니, 책임을 너무 많이 가지고 있다.
    • 코드의 복잡성이 증가한다
    • 유지 보수가 증가한다.


    해결 방법은? 

       Servlet의 기능을 분산 시키는 것으로 JSP도입한다.  JSP는 HTML 내에 Java 코드를 삽입할 수 있는 기술로, 웹 페이지를 더 쉽게 동적으로 생성할 수 있도록 도와주었다.

     

    Servelt에 JSP 도입

    그런데도...

       JSP 내에서는 비즈니스 로직과 관계된 로직이 JSP에 일부에 있어 화면 담당 Viewer의 역활을 독립적으로 할수 없다. 

     

    결론 

     

       사용자가 요청을 했을때 Servlet이 MVC 패턴의 모든작업을 진행 하지만, 유지보수적인 어려움에 있었고, JSP를 도입하여 화면 담당으로 분리를 하고 싶지만 비즈니스로직의 일부가 JSP 내부에 존재하기 때문에 완전한 분리가 어려웠다.

     

    이상적인 MVC 

     

     MVC는 책임을 분리하여 개별 기능으로서 필요한 부분만 수정하도록 진행하는 결과를 원한다

     

    기획이 변하지 않는 이상 비즈니스 로직과 View의 수정원인은 별개로 진행한다.   

    수정 작업 화면 요구 사항
    View 로직에서 수정 작업 한다. 비즈니스로직에서만 처리한다.

     

      책임 어떻게????
    Controller 1. HTTP Request를 전달 받아 파라미터를 검증한다.

    2. 비즈니스 로직을 실행한다.

    3. View에 전달할 결과를 조회하여 Model 객체에 임시로
       저장한다
    2. 비즈니스 로직

    3 Layered Architectur 방식으로
      
      Controller  
          
      Service       

      Repository  

    Model
    1.View에 출력할 Data를 저장하는 객체

     
    View 1. 비즈니스나 Data 접근을 몰라도 된다.


    2. Model 객체에 담긴 Data를 사용하여 View Rendering 에만
        집중한다. (화면 표시만)

     

     

    'Spring' 카테고리의 다른 글

    [Spring] SpringMVC  (0) 2025.03.30
    [Spring] MVC 패턴 문제  (0) 2025.03.29
    [Spring] Annotation  (0) 2025.03.29
    [Spring] HTTP Method 속성  (0) 2025.03.27
    [Spring]HTTP MESSEGE 구조  (0) 2025.03.27
Designed by Tistory.