Servlet
- Java 코드 안에 HTML 코드가 포함
- 웹 기반의 요청에 대한 동적인 처리가 가능한 Server Side에서 돌아가는 Java Program
- Data Processing(Controller)에 좋음
- 즉, DB와의 통신과 Business Logic 호출, 데이터를 읽고 확인하는 작업 등에 유용하다.
✍️ Servlet에 대한 더 자세한 설명은 서블릿(Servlet)이란 포스팅을 참고
JSP(Java Server Pages)
- HTML 코드 안에 Java 코드가 포함
- Java 언어를 기반으로 하는 Server Side 스크립트 언어
- 서블릿과 자바 코드만으로 HTML을 만들면 동적인 처리가 가능한 Server Side에서 돌아가는 자바 프로그램이지만 자바 코드로 HTML을 만들어 내는 과정은 매우 복잡하고 비효율적이다.
- 이러한 이유로 템플릿 엔진인 JSP를 사용하여 HTML 문서에서 필요한 곳만 코드를 동적으로 변경하여 작업을 진행한다.
Servlet과 JSP의 차이와 관계
- 서블릿 기술을 쉽게 말해서 서버에서 동적으로 요청과 응답을 처리할수 있는 API들을 정의한 것이라고 할 수 있다.
- JSP는 근본적으로 서블릿과 같은 원리지만 좀 더 HTML을 쉽게 이용할 수 있는 방식으로 코드를 작성할 수 있기 때문에 ‘서블릿으로는 코드를 이용한 처리, JSP로는 화면 개발’과 같이 역할을 분담해서 개발하는 것이 일반적이다.
- 둘의 차이점
- 기능의 차이는 없고 역할의 차이만 있다.
- JSP는 서블릿과 달리 HTML 코드를 그대로 이용하고 필요할때만 약간의 자바 코드를 넣는다.
- 반면 서블릿은 자바 코드를 이용해서 HTML 문자열을 만들어낸다.
- 즉, JSP는 HTML 내에 자바 코드를 추가하는 방식이고, 서블릿 방식은 자바 코드 안에 HTML 코드를 추가하는 방식이다.
- JSP 코드는 자바 코드가 아님에도 서블릿과 동일하게 처리되는 데, 이는 JSP 파일도 내부적으로 서블릿 코드로 변환되어서 컴파일되고 실행되기 때문이다. JSP 파일은 필요한 순간에 자바 파일로 생성되고, 이를 컴파일해서 class 파일로도 만들어진다.
Reference
https://gmlwjd9405.github.io/2018/11/04/servlet-vs-jsp.html