본문으로 바로가기

Servlet과 JSP, MVC 패턴

category Java/Spring 2021. 6. 30. 18:32

웹 개발 종류들

 

 

정적 컨텐츠: 

파일 그대로 웹 브라우저에 전달

Spring 에서는 static 폴더를 통해 정적 컨텐츠를 제공할 수 있다. 

예시 )

폴더 구조

 

HTML
hello_static.html으로 접근 가능


Servlet

  • Server + Applet
  • 서버환경에서 웹 요청에 대한 동적 처리가 가능하도록 하는 Java 프로그램
  • Java 안에 HTML코드가 결합되어 있다
  • HttpServlet 클래스를 상속받아 구현

 

JSP

  • Servlet에서 단점을 보완한 확장된 형태
  • HTML에 java를 넣을 수 있다

 

Java로직과 HTML 코드가 결합되어 유지보수성이 떨어짐

 


MVC 패턴

Servlet과 JSP가 가지는 문제를 해결하고자 적용하게 된 패턴

 

  • Model : 비즈니스 로직을 수행
  • View : 사용자에게 보여지는 인터페이스, Model로부터 값을 받아 사용자에게 보여준다
  • Controller : Model과 View 간 상호작용, 제어하는 역할

 

Model 1

모든 요청을 JSP에서 처리하는 단순한 구조 

Model1

  • 브라우저에서 JSP에 요청을 보내면 Java Bean에 접근해 로직을 수행함
  • 응답은 다시 JSP를 통해 반환된다
  • 개발 속도가 빠르나 JSP가 직접적인 연관을 갖기에 Side effect이 발생할 수 있고 비지니스 로직과 HTML이 섞여있어 유지보수성이 떨어짐

 

Model2 (MVC)

Model2

  • Servlet이 결합되어 중간 역할을 수행하며 View와 JavaBean간 의존성을 느슨하게 한다
  • 개발 속도가 느려질 수 있으나 유지보수성이 좋아짐
  • Spring MVC

 

 

 

 

API

특정 포맷으로 (보통 JSON)으로 Data 를 내려주고 화면(Vue, React 등 )에서 알아서 데이터를 가공하여 사용할 수 있음

혹은 서버끼리의 통신이 필요할 때는 View 가 필요 없기 때문에 API 방식을 사용한다.