스프링 MVC 프레임워크

Seyeong·2022년 10월 25일
0

스프링

목록 보기
5/7

서블릿과 JSP의 한계

서블릿으로 개발할 때는 뷰(View) 화면을 위한 HTML을 만드는 작업이 자바 코드에 섞여서 지저분하고 복잡했다.
이러한 문제를 JSP를 사용함으로써 뷰를 생성하는 HTML 작업을 깔끔하게 가져가고 동적으로 변경이 필요한 부분에만 자바 코드를 적용했다. 그런데 이렇게 해도 몇 가지 고민이 해결되지 않는다.

우선 JSP 파일엔 자바 코드, 데이터를 조회하는 리포지토리 등 다양한 코드가 JSP에 노출되어 있다. 그리고 JSP 파일이 너무 많은 역할을 한다.

MVC 패턴 - 개요

하나의 JSP나 서블릿으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하면 너무 많은 역할을 하기 때문에 유지보수가 어려워진다.

변경의 라이프사이클 (★)

굉장히 중요한 개념으로 둘 사이에 변경의 라이브 사이클이 다르다는 것이다. 예를 들어 UI 일부를 수정하는 것과 비즈니스 로직을 수정하는 것은 각각 다르게 일어날 확률이 매우 높다. 즉, 변경의 라이프사이클이 다른 부분을 하나의 코드로 관리하는 것은 유지보수하기 좋지 않다.

Model View Controller

하나의 서블릿이나 하나의 JSP로 처리하던 것을 컨트롤러(Controller)와 뷰(View)의 영역으로 역할을 나눈 것을 의미한다.

  • 컨트롤러 : HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다(호출한다). 그리고 뷰에 전달할 결과 데이터를 모델에 담는다.
  • 모델 : 뷰에 출력할 데이터를 담아둔다. 뷰가 필요로하는 데이터를 모두 모델에 담아서 전달해주는 덕분에 뷰는 비즈니스 로직이나 데이터 접근을 몰라도 되고, 화면을 렌더링하는 일에 집중할 수 있다.
  • : 모델에 담겨있는 데이터를 사용해서 화면을 그리는 일에 집중한다.

추가적으로 form URL을 입력할 때 '/경로' 로 적지 않고 '경로' 로 슬래시 없이 적으면 상대경로로 경로가 적용되어 현재 디렉토리에서 경로로 이동한다.

0개의 댓글