Continuous Challenge

8. MVC 패턴 본문

Spring/Spring MVC

8. MVC 패턴

응굥 2022. 4. 27. 22:55
728x90
728x90

템플릿 엔진

템플릿 엔진에는 JSP, Thymeleaf, Freemarker, Velocity등이 있다.

템플릿 엔진을 사용하면 HTML 문서에서 필요한 곳만 코드를 적용해서 동적으로 변경할 수 있다.

MVC 패턴

Model은 HttpServletRequest 객체를 사용한다.

request는 내부에 데이터 저장소를 가지고 있는데, request.setAttribute(), request.getAttribute() 를 사용하면 데이터를 보관하고 조회할 수 있다.

 

/WEB-INF

이 경로 안에 JSP가 있으면 외부에서 직접 JSP를 호출할 수 없다. 우리가 기대하는 것은 항상 컨트롤러를 통해 JSP를 호출하는 것이다.

 

redirect vs forward

리다이렉트는 실제 클라이언트(웹 브라우저)에 응답이 나갔다가 클라이언트가 redirect 경로로 다시 요청한다.

따라서 클라이언트가 인지할 수 있고 URL 경로도 실제로 변경된다. 

반면에 포워드는 서버 내부에서 일어나는 호출이기 때문에 클라이언트가 전혀 인지하지 못한다.

 

MVC 패턴의 한계

  • 포워드 중복
    - 뷰로 이동하는 코드가 항상 중복 호출되어야 한다.
  • ViewPath에 중복
    - prefix : /WEB-INF/views/
    - suffix : .jsp
    만약 파일 확장자가 변경된다면 전체 코드를 다 변경해야 한다.
  • 사용하지 않는 코드
  • 공통 처리가 어렵다
    - 이 문제를 해결하려면 컨트롤러 호출 전에 먼저 공통 기능을 처리해야 한다.
      '프론트 컨트롤러(Front Controller) 패턴'을 도입하면 이런 문제를 깔끔하게 해결할 수 있다.
      스프링 MVC의 핵심도 이 프론트 컨프롤러에 있다.
728x90
728x90

'Spring > Spring MVC' 카테고리의 다른 글

10. 스프링 MVC 구조 이해  (0) 2022.05.03
9. MVC 프레임워크 만들기  (0) 2022.05.01
7. 서블릿  (0) 2022.04.25
6. 자바 백엔드 웹 기술 역사  (0) 2022.04.22
5. HTML, HTTP API, CSR, SSR  (0) 2022.04.22
Comments