[스프링 MVC 1] 서블릿, JSP, MVC 패턴

둡둡·2022년 10월 24일
0

Spring-MVC-1

목록 보기
4/9

회원 관리 웹 애플리케이션

  • 회원 정보: 이름, 나이
  • 기능 요구사항
    • 회원 저장
    • 전체 회원 목록 조회

서블릿

  • 자바 코드로 HTML Form을 만들어서 응답해야 함
  • 복잡하고 비효율적

템플릿 엔진

  • HTML 코드에서 자바 코드를 사용하여 동적으로 사용
  • JSP, Thymeleaf, velocity 등

JSP

  • <%@ ~~ %> : import문
  • <% ~~ %> : 자바코드 입력
  • <%= ~~ %> : 자바코드 출력

=> 서블릿과 JSP의 한계 (유지보수 어려움, 코드 노출 위험성 등)
=> MVC 패턴의 등장

MVC 패턴

개요

  • 유지보수 어려움: 서블릿이나 JSP의 너무 많은 역할
  • 변경 라이프 사이클: 비즈니스 로직과 뷰의 변경 라이프 사이클이 다름
  • 기능 특화: JSP와 같은 뷰 템플릿은 화면 렌더링에 특화됨, 비효율적

Model View Controller

  • 컨트롤러: HTTP 요청을 받아 파라미터 검증, 비즈니스 로직 실행, 모델 객체에 결과 데이터 저장
    • 비즈니스 로직이 커지는 경우 서비스 (Service) 계층으로 분리
  • 모델: 뷰에 출력할 데이터 저장
  • 뷰: 모델에 담겨 있는 데이터를 사용하여 화면 렌더링(HTML 생성)

적용

  • /WEB-INF: 해당 경로 안에 있는 JSP는 컨트롤러를 통해서만 호출 가능
  • redirect: 실제 응답 후 다시 redirect 경로 요청, url 경로도 변경
  • forward: 내부 서버에서 일어나는 호출로 클라이언트는 인지하지 못함

한계

  • 포워드, ViewPath 중복: View로 이동하는 코드가 항상 중복으로 호출됨
  • 사용하지 않는 코드
  • 공통 처리 어려움
    -> 프론트 컨트롤러(Front Controller) 패턴 도입 (입구 역할)

[출처] 스프링 MVC 1 - 김영한, 인프런

profile
괴발개발라이프

0개의 댓글