간단히 정리하면, 서블릿(Servlet)은 웹 서버에서 실행되는 자바 프로그램으로, HTTP 클라이언트로부터 들어오는 요청과 HTTP 서버상의 데이터베이스 또는 애플리케이션 사이에서 중개자(middle layer) 역할을 수행합니다. 반면 JSP(JavaServer Pages)는 두 가지 유형의 텍스트를 포함하는 문서입니다. 하나는 미리 정의된 정적 텍스트이고, 다른 하나는 서버 응답을 받은 후에 렌더링되는 동적 텍스트입니다.
그렇다면 서블릿과 JSP는 어떤 점에서 다를까요? 아래 표에서 핵심적인 차이점을 항목별로 비교해 보겠습니다.
서블릿과 JSP의 주요 차이점
| 번호 | 구분 기준 | 서블릿(Servlet) | JSP |
|---|---|---|---|
| 1 | 구현 방식 | 순수 자바(Java) 언어로 개발됩니다. | 기본적으로 HTML로 작성되며, 자바 코드도 포함할 수 있지만 이 경우 JSTL 같은 별도의 태그 라이브러리가 필요합니다. |
| 2 | MVC 패턴에서의 역할 | 클라이언트의 요청을 받아 처리한 뒤 응답을 반환하는 컨트롤러(Controller) 역할을 담당합니다. | 서블릿이 반환한 결과 데이터를 화면에 렌더링하는 뷰(View) 역할을 담당합니다. |
| 3 | 요청 프로토콜 | HTTP뿐 아니라 모든 종류의 프로토콜 요청을 수용하고 처리할 수 있습니다. | HTTP 프로토콜 요청만 지원합니다. |
| 4 | 세션 관리 | 기본적으로 세션 관리가 비활성화되어 있으며, 개발자가 명시적으로 활성화해야 합니다. | 세션 관리가 자동으로 활성화되어 별도 설정이 필요 없습니다. |
| 5 | 성능 | JSP보다 실행 속도가 빠릅니다. | JSP 페이지가 자바 코드로 변환(translate)된 후 컴파일되는 과정을 거치므로 서블릿보다 상대적으로 느립니다. |
| 6 | 수정 사항 반영 속도 | 코드를 수정하면 재컴파일, 재배포, 서버 재시작 과정이 필요해 시간이 오래 걸립니다. | 브라우저에서 새로고침 버튼만 누르면 변경된 내용이 즉시 반영되어 수정 작업이 매우 빠릅니다. |
서블릿 예제 코드
아래는 HttpServlet을 상속하여 간단한 "Hello World" 메시지를 출력하는 기본적인 서블릿 예제입니다.
JavaTester.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class JavaTester extends HttpServlet {
private String message;
public void init() throws ServletException {
// 필요한 초기화 작업 수행
message = "Hello World";
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 응답 콘텐츠 타입 설정
response.setContentType("text/html");
// 실제 비즈니스 로직 작성 부분
PrintWriter out = response.getWriter();
out.println(message);
}
}실행 결과
Hello World
정리
서블릿은 자바 중심의 강력한 제어 로직 처리에 적합하고, JSP는 화면 출력(UI) 작업을 간편하게 처리할 수 있다는 장점이 있습니다. 실무에서는 MVC 패턴을 적용해 서블릿으로 요청 흐름을 제어하고, JSP로 화면을 구성하는 방식으로 함께 활용하는 것이 일반적입니다.