BackEnd 학습/Spring Framework

Spring(스프링) -서블릿, JSP, MVC패턴

잉아당 2023. 6. 7. 23:05
728x90

Servlet으로 만들어진 HTML

  • 서블릿과 자바만으로 HTML 생성
  • → 이 방식은 동적인 HTML 생성이 불편
  • 자바코드로 HTML을 생성하는 것보다 HTML에 동적으로 변경해야 하는 부분만 자바 코드를 넣는 것이 더 효율적
  • → 템플릿 엔진 사용
  • 템플릿 엔진으로 JSP, Thymeleaf 등이 있음

JSP로 만들어진 HTML

  • JSP 안에서의 requst와 response는 그냥 사용이 가능
    • 객체명을 request, response로 사용해야함
  • Java 코드는 <% ~ %> 안에 넣어 주어야 함
  • Java 코드 출력은 <%= ~ %>안에 넣어 주어야 함
  • 실행할 때 .jsp까지 경로에 작성해 주어야 함

MVC 패턴

  • 하나의 서블릿이나 JSP에서 뷰와 로직을 모두 처리하는 것은 하나의 곳에서 너무 많은 역할을 하고 유지보수가 어려워짐
  • 뷰와 로직의 변경 라이프 사이클이 다름
    • 뷰와 로직의 변경 시점은 다를 경우가 많기 때문에 하나의 파일에서 계속 변경을 해주어야 함
  • 뷰와 로직을 따로 개발하는 것이 좋음
  • → MVC 패턴
  • MVC 패턴은 Model, View, Controller 로 분리하여 서로의 역할을 나눈 패턴을 말함
    • 컨트롤러
      • HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행
      • 뷰에 전달할 결과 데이터를 조회 하여 모델에 담음
    • 모델
      • 뷰에 출력할 데이터를 담음
      • 뷰는 비즈니스 로직이나 데이터 접근을 몰라도 됨
      • 화면 렌더링 하는 일에 집중
      • 모델에 담겨있는 데이터를 사용해서 화면 그리는 일만 함
      • HTML 생성하는 부분을 의미 함
  • 모델은 HttpServletRequest 객체를 사용
  • dispatcher.forward()
    • 다른 서블릿이나 JSP로 이동할 수 있으며 서버 내부에서 다시 호출이 발생하게 됨
  • WEB-INF 경로 안에 JSP가 있으면 직접 JSP를 호출할 수 없고 컨트롤러를 통해 JSP를 호출해야 함
  • redirect
    • 클라이언트에 응답이 갔다가 다시 클라이언트가 redirect 경로로 다시 요청하여 클라이언트가 인지 할 수 있음
  • forward
    • 서버 내부에서 다시 호출하기 때문에 클라이언트가 인지할 수 없음
  • request 객체를 통해 뷰에 모델을 전달할 수 있음
  • ${} 표현식을 이용하면 편하게 데이터를 조회할 수 있음
  • 단점
    • 포워드의 중복
    • viewpath의 공통 경로 중복
    • 사용하지 않는 코드 존재
      • ex) response
    • 공통 처리 어려움
    → 단점을 처리하기 위해 프론트 컨트롤러 도입

 

출처 : https://www.inflearn.com/course/스프링-mvc-1

 

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

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

www.inflearn.com