에러&문제해결

서블릿 | 서블릿 URL 에러 404!!!

보배 진 2025. 11. 27. 15:00

 

 

 

🌳 서블릿

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