우리 프로젝트의 v0 — 읽기 자료
HttpServlet 클래스를 상속받아 doGet() 또는 doPost() 메서드를 구현한다.
@WebServlet
Servlet 을 특정 URL 에 연결하는 어노테이션. 예: @WebServlet("/hello") 는 /hello 로 들어오는 요청을 이 Servlet 이 처리한다는 뜻.
HttpServletRequest / HttpServletResponse
요청과 응답을 다룰 수 있게 해주는 객체. Tomcat 이 우리 메서드를 호출할 때 이 두 객체를 넘겨준다.
지금까지 우리는 「클라이언트 ↔ 서버」, 「HTTP 메시지」, 「쿠키·세션」, 「정적·동적」 같은 개념들을 봤습니다. 이제 — 실제로 우리가 만든 코드가 응답을 돌려주는 첫 순간을 만들 차례입니다.
Spring 도 사실은 Servlet 위에 얹힌 거대한 도우미입니다. 가장 밑바닥의 Servlet 한 개를 직접 만들어보면, 나중에 Spring 이 「뭘 자동으로 해주는지」가 명확히 보입니다. 같은 일을 두 번 만들어보는 이터레이션 패턴의 첫 발걸음.
한 화면에 다 담기는 분량입니다. 이게 동적 응답의 본질.
package hello;
import java.io.IOException;
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 {
@Override
protected void doGet(HttpServletRequest req,
HttpServletResponse resp)
throws IOException {
resp.setContentType("text/html;charset=UTF-8");
resp.getWriter().write("<h1>Hello, World</h1>");
}
}
@WebServlet("/hello") — 이 Servlet 은 /hello URL 을 처리한다는 표시extends HttpServlet — Servlet 의 기본 기능을 상속받음doGet(...) — GET 요청이 오면 호출되는 메서드resp.getWriter().write(...) — 응답 바디에 HTML 을 직접 적음흐름도에 새로 추가된 박스들:
이게 이번 과정 동안 점점 길어질 흐름도의 첫 두 박스입니다. Part 2 부터는 그 안에 Bean·Controller·Service 같은 박스들이 차례로 들어옵니다.
실제로 Eclipse 에서 프로젝트를 만들고 Tomcat 을 등록해서 위 코드를 띄워보는 단계별 가이드는 Lab 자료에서 따라가게 됩니다.
오늘 만든 것은 화려하지 않습니다 — "Hello, World" 한 줄. 하지만 이게 v0 출발점이고, 앞으로 우리는 같은 프로젝트를 단계적으로 진화시킵니다:
웹의 동작 원리를 이론으로만 안다. Tomcat 이 어떻게 작동하는지 막연.
내가 짠 자바 코드가 Tomcat 위에서 돌아가고, 그 결과를 브라우저에서 직접 본다. 우리 프로젝트가 살아있다.