자바 웹 개발의 핵심 기술인 서블릿(Servlet)과 JSP의 연동 방식을 정리했다.
로직 처리를 담당하는 서블릿과 화면 구현을 담당하는 JSP의 협업 구조를 분석했다.
서블릿과 JSP의 협업 모델 (MVC)
역할 분담을 위해 Model 2(MVC) 구조를 적용한다.
// 1. Controller (Servlet): 요청 수신 및 로직 처리
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
String message = "서블릿에서 준비한 데이터이다.";
request.setAttribute("msg", message); // 데이터 저장
// 2. JSP로 제어권 이동 (Forward)
request.getRequestDispatcher("/hello.jsp").forward(request, response);
}
}
<!-- 3. View (JSP): 데이터 출력 -->
<body>
<h2>결과 화면</h2>
<p>메시지: ${msg}</p> <!-- EL을 사용한 출력 -->
</body>
포워딩(Forwarding) 메커니즘
서블릿에서 RequestDispatcher.forward() 호출 시 서버 내부에서 제어권이 JSP로 전환된다.
브라우저의 URL은 유지되며 request 객체에 저장된 데이터도 보존된다.
이는 서버 내부의 효율적인 배턴 터치 과정이다.
관심사 분리의 이점
서블릿과 JSP의 연동은 ‘관심사 분리(Separation of Concerns)’ 원칙을 구현한다.
로직은 서블릿에, 디자인은 JSP에 배치하는 구조는 협업과 유지보수 효율을 극대화한다.
이러한 기본 구조의 이해는 현대 웹 프레임워크 학습의 토대가 되는 것 같다.