# 질의 응답 상황
[면접관]
| 지원자님, Spring Framework을 주로 사용하셨다고 들었습니다. 서블릿에 대해서 간략하게 설명해 주세요. |
[막개발자]
| 서블릿 (Servlet)은 Java를 이용해 웹페이지를 동적으로 생성하는 서버 측 프로그램입니다. 사용자의 입력을 받아 동적인 HTML을 만드는 역할을 하며, JSP와 비슷하게 혼동될 수 있습니다. JSP는 HTML 문서 내에 Java를 삽입한 형태로, 이를 컴파일하면 서블릿으로 변환됩니다. 서블릿은 서블릿 컨테이너를 통해 관리되며, 톰캣과 같은 WAS에서 실행됩니다. 클라이언트 요청에 따라 실행할 서블릿을 제어하는 역할을 합니다. |
# 상세 설명

1. 서블릿(Servlet)
서블릿은 자바 기반의 서버 프로그램으로, 클라이언트 요청을 처리하고 동적인 데이터를 생성하여 웹 페이지를 응답하는 중요한 역할을 합니다. 이는 HTTP 요청과 응답을 처리하는 Java EE 표준 기술로, 웹 애플리케이션의 핵심 컴포넌트입니다. 서블릿은 기본적으로 웹 서버에서 실행되며, 클라이언트의 요청에 맞춰 동적인 HTML을 생성합니다.
1.1 서블릿의 특징
- 자바 기반 서버 프로그래밍: 서블릿은 자바로 작성되며, 톰캣(Tomcat)과 같은 웹 서버에서 실행됩니다.
- 컨트롤러 역할: 클라이언트 요청을 처리하고 필요한 데이터를 반환하거나, JSP와 같은 다른 리소스로 요청을 전달합니다.
- 라이프 사이클: 서블릿은 init(), service(), destroy() 메서드를 통해 관리됩니다.
- 고성능: 서블릿은 최초 실행 시 로드되고 이후 재사용되므로 성능이 뛰어납니다.
- 플랫폼 독립성: Java로 작성되어 OS에 상관없이 실행됩니다.
1.2 서블릿의 동작 과정
- 클라이언트가 HTTP 요청을 보냅니다.
- 요청은 서블릿 컨테이너로 전달됩니다.
- 서블릿 컨테이너는 해당 서블릿을 호출하고, 필요한 처리를 진행합니다.
- 처리된 결과는 클라이언트에게 반환됩니다.
1.3 서블릿 예제 코드
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.getWriter().println("<h1>Hello, Servlet!</h1>");
}
}
2. JSP (Java Server Pages)
JSP는 서블릿의 단점을 보완하기 위해 만들어진 기술로, HTML 코드 내에 Java 코드를 삽입하여 동적으로 웹 페이지를 생성합니다. JSP는 서블릿보다 간단한 구조로 작성할 수 있어, 동적 콘텐츠 생성을 더 쉽게 할 수 있습니다.
2.1 JSP의 특징
- HTML과 자바 코드 혼합: HTML 페이지 내에 Java 코드를 포함하여 동적 콘텐츠를 생성합니다.
- 컴파일 과정: JSP 파일은 실행 시 서블릿으로 변환됩니다.
- 내장 객체 제공: JSP는 request, response, session 등의 객체를 제공하여 HTTP 요청과 응답을 쉽게 처리할 수 있습니다.
2.2 JSP 예제 코드
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Hello JSP</title>
</head>
<body>
<h1>Hello, JSP!</h1>
<p>Current Time: <%= new java.util.Date() %></p>
</body>
</html>
3. 서블릿과 JSP의 차이점
| 항목 | 서블릿(Servlet) | JSP(Java Server Pages) |
| 기본 역할 | 클라이언트 요청 처리 및 데이터 연산 | HTML 기반의 동적 웹 페이지 생성 |
| 코드 구조 | 자바 코드에 HTML 포함 | HTML 코드에 자바 코드 포함 |
| 가독성 | 낮음 | 높음 |
| 컴파일 과정 | 서블릿으로 직접 컴파일 | JSP 실행 시 서블릿으로 변환 후 컴파일 |
4. 서블릿과 JSP의 관계
JSP는 서블릿의 상위 추상화로, JSP로 작성된 파일은 실행 시 서블릿으로 변환되어 서블릿 컨테이너에서 실행됩니다. 서블릿은 주로 비즈니스 로직을 처리하고, JSP는 웹 페이지의 UI를 처리합니다.
5. 서블릿과 JSP의 통합 사용
서블릿과 JSP를 함께 사용하여 MVC(Model-View-Controller) 패턴을 구현할 수 있습니다:
- Model: 비즈니스 로직과 데이터 처리.
- View (JSP): 클라이언트에게 표시될 UI 생성.
- Controller (서블릿): 요청을 처리하고 모델과 뷰를 연결합니다.
'[이직 면접] 질의 응답' 카테고리의 다른 글
| [Spring Framework] WAS 구동 순서 및 Spring 초기화 과정 (0) | 2021.01.19 |
|---|---|
| [Java] Java 언어의 특징과 동작 원리 (0) | 2021.01.19 |
| [Java] JVM, JRE, JDK의 차이점과 역할에 대해 설명하세요 (0) | 2021.01.19 |
| [Spring Framework] 어노테이션(Annotation)에 대해서 말씀하세요 (0) | 2021.01.19 |
| [JavaScript] Ajax와 Fetch에 대해서 말씀하세요 (0) | 2021.01.06 |