🌳 서블릿
Servlet은 자바로 만든 서버측 프로그램으로,
웹 서버나 서블릿 컨테이너(Tomcat, Jettty 등) 안에서 실행되어
HTTP 요청을 처리하고 응답을 생성하는 역할을 한다
즉, 웹 애플리케이션의 동적인 기능을 담당한다
🌳 서블릿 클래스 구조
서블릿은 보통 HttpServlet을 상속해서 작성함
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloServlet extends HttpServlet {
// GET 요청 처리
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<h1>Hello, Servlet!</h1>");
}
// POST 요청 처리
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// POST 처리 로직
}
}
🌳 서블릿 동작 과정
1. 클라이언트 요청 → 브라우저에서 URL 요청
2. 서블릿 컨테이너 → 요청 URL 매핑 확인
3. 서블릿 로딩 -> 처음 요청 시 클래스 로딩, init() 호출
4. 요청 처리 → doGet(), doPost() 호출
5. 응답 생성 → HTML, JSON 등 반환
6. 종료 → destroy() 호출 (서버 종료 또는 언로드 시)
🌳 서블릿 등록 방법
1. web.xml에 등록 (전통적 방식)
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.example.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
2. 애노테이션 방식 (Servlet 3.0+)
@WebServlet(name = "HelloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
...
}
🌳 서블릿 라이프사이클
1. init() - 최초 한 번, 서블릿 초기화
2. service() - 요청마다 호출, doGet()/doPost()로 분기
3. destory() - 서블릿 종료 시 호출, 자원 해제
🌳 장점
▪ 자바 기반이므로 플랫폼 독립적
▪ 세션 관리, 쿠키 처리 등 동적 웹 기능 지원
▪ JSP와 함께 사용하면 MVC 패턴 구현 가능
< 서블릿 404 에러 >

main.jsp에서 ajax를 이용해 url에 서블릿 주소를 넣는다
서블릿은 web.xml과 url이 매핑되어 있어야 한다
해당 URL 패턴과 매핑된 서블릿이 없음 → 404 오류
web.xml 매핑 실수 → 서블릿 호출 불가 + 404