본문 바로가기
Learning-log/Spring & JPA

(스프링MVC1편-백엔드 웹 개발 핵심 기술) 3-(3)JSP로 회원관리 웹 애플리케이션 만들기, (4)MVC패턴 - 개요

by why제곱 2023. 5. 11.

- JSP로 회원관리 웹 애플리케이션 만들기

  • JSP 라이브러리 추가 : build.gradle에!
//JSP 추가 시작
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
implementation 'javax.servlet:jstl'
//JSP 추가 끝

 

  • JSP는 꼭 첫 줄 써야 함!
  • JSP에 보통 로직 먼저 넣고 그 밑에 html 넣음
  • '<% ~ %> 내에 자바코드 그대로 쓸 수 있음
  • <%= ~~ %> 는 자바코드 출력
  • 회원 목록은 이전보다 JSP를 쓰는게 효과가 좋은 걸 확인할 수 있음
  • 하!지!만! JSP를 써도 두 가지 일을 한 페이지에 함께 처리하는 느낌. 
  • 서블릿과 JSP의 한계
    • 서블릿으로 개발 시, 뷰 화면을 위한 HTML만드는 작업이 자바코드에 섞여 지저분하고 복잡
    • JSP를 사용한 덕분에 뷰를 생성하는 HTML작업이 깔끔해졌음. 
    • 하지만 코드의 상위 절반은 회원을 저장하기 위한 비즈니스 로직, 나머지 절반만 HTML을 보여주기 위한 뷰 영역. 회원 목록도 마찬가지.
    • JAVA 코드, 데이터 조회하는 레포지토리 등 다양한 코드가 JSP에 노출되어 있고 JSP가 너무 많은 역할을 함
    • 그래서 MVC 패턴 등장.

 

- MVC패턴 - 개요 

  • 하나의 JSP나 서블릿만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하면 너무 많은 역할을 하게 되고 결과적으로 유지 보수가 어려워짐. 
  • 변경의 라이프 사이클
    • 둘 사이에 라이프사이클이 다르다는 점. UI 일부를 수정하는 일과 비즈니스 로직ㅇ르 수정하는 일은 각각 다르게 발생할 가능성이 매우 높고 서로 영향을 주지 않으므로 이 둘을 하나의 코드로 관리하는 것은 유지보수에 좋지 않음.
  • 기능 특화 : 각각의 업무만 담당하는 것이 효과적
  • MVC 패턴은 지금까지 학습한 것처럼 하나의 서블릿이나 JSP로 처리하던 것을 컨트롤러와 뷰라는 영역으로 서로 역할을 나눔. 웹 애플리케이션은 주로 이 패턴 사용.
    • 컨트롤러
      • HTTP요청을 받아서 파라미터를 검증하고, 비즈니스 로직 실행. 뷰에 전달할 결과 데이터를 조회해서 모델에 담음.
    • 모델
      • 뷰에 출력할 데이터를 담아 둠. 뷰가 필요한 데이터를 모두 모델에 담아서 전달해주는 덕분에 뷰는 비즈니스 로직이나 데이터 접근을 몰라도 됨. 화면을 렌더링하는 일에 집중 가능
      • 모델에 담겨 있는 데이터를 받아와 사용. 화면에 그리는 일에 집중. HTML 생성하는 부분