Spring/SpringMVC

MVC 패턴 - 한계

느리지만 꾸준하게 2022. 4. 23. 19:08

MVC 패턴을 이용해서 컨트롤러 뷰 역할을 구분하게 되었다.

뷰는 화면을 그리는 역할에 집중하게 되고 모델에서 필요한 데이터를 꺼내어 화면을 만들면 된다.

하지만 컨트롤러는 중복이 많고 필요하지 않은 코드들이 계속해서 보였다.

 

 

 

 

포워드가 항상 중복인데 아래 코드가 계속 반복되어 나타난다.

매서드로 뽑아서 util class로 해도 되지만 utils 클래스 자체를 또 호출을 해줘야한다.(호출도 중복이 생긴다.)

 RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath);
  dispatcher.forward(request, response);

 

ViewPath에도 계속해서 중복이 생겼다.

  • /WEB-INF/views/ 반복되면서
  • .jsp 파일도 반복이 되었다.

 

그리고 사용하지 않는 코드도 있는데

 

아래 코드 같은 경우는 현재 코드에서 사용되지 않는다.

HttpServletRequest request, HttpServletResponse response

 

 

공통 처리가 매우 어렵다.

  • 기능이 복잡할 수록 컨트롤러에서 공통으로 처리해야 하는 부분이 계속 증가할 것이다.
  • 단순히 공통 기능을 메서드로 뽑으면 되지만, 해당 메서드를 계속 호출해야하고(중복문제)
  • 호출하지 않으면 문제가 된다.

 

 

  • 컨트롤러 호출 전에 먼저 공통 기능을 처리해야 한다.
  • 프론트 컨트롤러 패턴을 도입하면 이러한 문제를 깔끔하게 해결하는데
  • 스프링 MVC의 핵심도 이 프론트 컨트롤러에 있다.

 

마지막으로 이 그림을 다시한번 상기시키자

 

  • 컨트롤러에서 파라미터 정보 체크하고 (400error는 문제있을시 생성)
  • 문제없으면 데이터 결과를 Model에 담아서 뷰에(JSP, Thymeleaf) 던진다.
  • 뷰는 모델의 담긴 정보를 꺼내서 본인의 역할인 렌더링하는데만 집중한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<출처 김영한: 스프링 MVC 1편 - 벡앤드 웹 개발 핵심 기술>

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

 

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

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

www.inflearn.com