[JSP] 서블릿(Servlet)과 JSP 정리, MVC 패턴
서블릿은 자바 기반의 웹 프로그래밍 기술로 자바 언어의 모든 기능을 사용할 수 있다.
(확장자도 .java)
스레드 기반의 빠른 처리 속도를 자랑하지만, 프로그램 내에서 HTML을 작성하는 것이
화면 인터페이스 구현에 너무 많은 코드를 필요로 하는 등
유지 보수 측면에서 많은 문제가 있다고 한다.
이러한 문제점을 개선한 것이 JSP(Java Server Page)다.
JSP는 서블릿 기반의 서버 스크립트 언어로 현재 가장 대표적인 웹 프로그래밍 기술이다.
서블릿의 장점을 수용하면서 단점을 보완했다.
JSP의 장점은 스레드 기반으로 시스템 자원을 절약하고 효율적인 공류가 가능하며
최초 요청시 서블릿으로 컴파일 되어 이후 요청에 대해서는 메모리에서 처리하므로
빠른 처리속도를 자랑한다. 또한 자바 언어의 모든 기능을 사용할 수 있으므로
무한한 확장성을 자랑한다.
Servlet과 JSP의 역할
✔ 기능의 차이는 없고 역할의 차이만 있다.
1. Servlet
⦁ Java 코드 안에 HTML 코드를 넣는다.
⦁ Data Processing(Controller)에 좋다.
⦁ 즉 DB와의 통신, 비즈니스 로직 호출, 데이터를 읽고 확인하는 작업 등에 유용하다.
⦁ Servlet이 수정된 경우 Java 코드를 컴파일한 후 동적인 페이지를 처리하기 때문에
전체 코드를 업데이트하고 다시 컴파일한 후 재배포하는 작업이 필요하다. (개발 생산성 저하)
2. JSP
⦁ HTML 코드 안에 Java 코드를 넣는다.
⦁ HTML을 작성하기 편하기 때문에 View를 구현하기 좋다.
⦁ JSP가 수정된 경우 재배포할 필요가 없이 WAS가 알아서 처리한다. (쉬운 배포)
MVC (모델 - 뷰 - 컨트롤러)
초기에 자바 웹 개발은 서블릿을 이용한 개발이였다.
이후 JSP의 등장으로 JSP 형태의 개발이 유행하게 되었고 지금에 와서는 각각의 장점이 있기 때문에 서블릿 + JSP 형태의 개발이 이루어지고 있다. 이를 MVC 패턴이라고 한다.
그리하여 JSP는 HTML 태그 사용이 용이하고 자바 코드 사용이 불편하기 때문에 사용자에게
결과를 보여주는 View(Client)를 담당하고,
자바 코드를 작성하기 편리한 서블릿은 주로 화면과 통신하여 자료를 받아 가공하고 다시 화면에 전달하는
Controller역할을 하고 있다. 결과적으로 유지보수가 용이해졌다.
MVC(모델-뷰-컨트롤러) 는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴입니다. 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있습니다. -Mmdn web docs
⦁ Model : Java Beans로, DTO와 DAO를 통해 Mysql과 같은 Data Storage에 접근
(데이터와 비즈니스 로직을 관리한다.)
⦁ View : HTML 사용이 더 편리한 JSP를 사용 (레이아웃과 화면을 처리)
⦁ Controller : Java코드 작성이 더 편리한 Servlet을 사용 (명령을 모델과 뷰 부분으로 데이터를 넘겨줌)