ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL 37th day(2021.11.27)
    TIL(Today I Learned) 2021. 11. 27. 20:40

    MVC 한계

    • 포워드 중복, 사용하지 않는 코드, 공통 처리가 어렵다
      • 해결방법) 프론트 컨트롤러 패턴 도입

    MVC 프레임워크 생성

    • FrontController 생성
    • ViewDispatcher 메서드 생성
    • 서블릿을 사용하지 않고 컨트롤러 생성, 논리 뷰 이름만으로 물리뷰 호출,
      • HTTP 요청 -> FrontController에서 컨트롤러를 조회해서 매핑 -> 컨트롤러 호출 -> ModelView 반환(논리 뷰 이름 반환)
      • viewResolver에서 논리 뷰를 물리 뷰로 반환
      • MyView에서 request.getAttribute()로 데이터를 조회하고 모델의 데이터를 꺼내서 request.setAttribute()에 담아둔뒤
      • JSP로 포워드해서 JSP를 렌더링한다.

    FrontController 패턴 특징

    • 프론트 컨트롤러 서블릿 하나로 클라이언트 요청을 받음,
    • 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출
    • 입구를 하나로!
    • 공통 처리 가능
    • 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도됨.

    서블릿 종속성 제거

    • controller에서는 서블릿 기능이 꼭 필요하지 않다. 따라서, Map으로 파라미터 정보를 대신 넘기도록 설정할 수 있다.
    • request 객체를 model로 만들어서 반환할 수 있다.
    • 서블릿 종속성을 제거함으로써 테스트 코드 작성이 수월해진다.

    궁금한점

    • ModelView process(Map<String, String>) -> 왜 String이 두번 들어가는가? 
      • 입력되는 파라미터 값의 타입이 모두 String이기 때문,
      • Map<String, Object>의 경우 View 내에서 사용될 객체를 받기 위한 타입
      • 즉, member를 저장하기 위한 model 선언인 request.setAttribute("member", member);와 같다

    Tip

    • 기존 코드를 수정해야할 상황에는 구조를 먼저 바꾸고 이상이 없을 시, 내용을 바꾸는 식으로 단계에 맞게 수정을 해야한다.
      • 점진적 리팩토링

    'TIL(Today I Learned)' 카테고리의 다른 글

    TIL 40th day  (0) 2021.11.30
    TIL 39th day  (0) 2021.11.29
    TIL 36th day (2021.11.27)  (0) 2021.11.27
    TIL 35th day 2021.11.26  (0) 2021.11.26
    TIL 33th day(2021.11.23)  (0) 2021.11.23
Designed by Tistory.