[Day 22 | Servlet] @WebServlet

y♡ding·2024년 11월 12일
0

데브코스 TIL

목록 보기
146/163

Servlet 애너테이션(@WebServlet)을 사용하면, web.xml 파일에 서블릿 설정을 작성하지 않고도 서블릿의 URL 매핑을 쉽게 지정할 수 있습니다. 애너테이션 방식은 코드 내에서 직접 서블릿을 설정할 수 있어 직관적이고, 설정이 간단하다는 장점이 있습니다.


@WebServlet 애너테이션의 기본 사용법

@WebServlet 애너테이션을 통해 서블릿의 URL 패턴을 지정할 수 있습니다. 애너테이션은 서블릿 클래스 위에 추가하며, web.xml에 별도로 서블릿을 등록할 필요 없이 자동으로 매핑됩니다.

기본 예제

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

@WebServlet("/hello")  // 서블릿 URL 매핑 설정
public class HelloServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=UTF-8");
        resp.getWriter().write("<h1>Hello, Servlet with Annotation!</h1>");
    }
}
  • @WebServlet("/hello"): /hello 경로로 요청이 오면 HelloServlet이 실행되도록 설정합니다.
  • 서블릿 컨테이너는 애너테이션을 통해 web.xml 파일 없이도 서블릿을 인식하고, 매핑 설정을 자동으로 처리합니다.

@WebServlet 애너테이션의 주요 속성

@WebServlet 애너테이션은 다양한 속성을 통해 서블릿의 동작을 세부적으로 설정할 수 있습니다.

  1. value 또는 urlPatterns: 서블릿이 매핑될 URL 패턴을 지정합니다.

    @WebServlet(value = "/hello")  // 단일 URL 패턴
    @WebServlet(urlPatterns = {"/hello", "/greet"})  // 여러 URL 패턴
  2. name: 서블릿 이름을 지정합니다. 기본값은 클래스 이름이 사용됩니다.

    @WebServlet(name = "HelloServlet", urlPatterns = "/hello")
  3. loadOnStartup: 서블릿의 로드 우선순위를 설정합니다. 값이 0 이상이면 서버 시작 시 서블릿이 로드됩니다.

    @WebServlet(urlPatterns = "/hello", loadOnStartup = 1)
  4. initParams: 서블릿에 초기화 매개변수를 전달합니다. 여러 매개변수를 설정할 수 있습니다.

    @WebServlet(urlPatterns = "/hello", initParams = {
        @WebInitParam(name = "param1", value = "value1"),
        @WebInitParam(name = "param2", value = "value2")
    })

애너테이션 방식과 web.xml 방식의 차이점

항목애너테이션 방식web.xml 방식
설정 위치코드 내부외부 설정 파일(web.xml)
가독성코드와 설정이 함께 있어 가독성 증가설정이 코드와 분리되어 가독성 떨어질 수 있음
유연성간단한 설정에 적합복잡한 설정, 필터, 리스너, 보안 설정에 유리
변경 용이성코드 수정 시 서블릿 설정 자동 반영설정을 수정하려면 web.xml을 따로 수정해야 함
사용 시기단일 서블릿이거나 간단한 설정에 적합대규모 애플리케이션이나 복잡한 설정에 적합

언제 애너테이션을 사용하고, 언제 web.xml을 사용할까?

  1. 애너테이션 사용 시기:
    • 서블릿, 필터, 리스너의 설정이 단순할 때.
    • 소규모 애플리케이션에서, 설정이 복잡하지 않고 코드와 설정이 함께 있으면 더 직관적일 때.
    • 빠르게 프로토타입을 개발하거나 테스트하는 경우.
  2. web.xml 사용 시기:
    • 복잡한 설정이 필요한 경우(예: 여러 URL 패턴, 보안 설정, 필터 체인 설정 등).
    • 설정 파일을 따로 관리하여 설정의 유연성과 유지보수성을 높여야 하는 경우.
    • 환경마다 설정이 달라질 수 있는 대규모 애플리케이션에서, 배포 환경에 따라 설정을 쉽게 변경할 수 있어야 하는 경우.

애너테이션과 web.xml 혼합 사용

애너테이션과 web.xml을 함께 사용할 수도 있습니다. 예를 들어, 주로 간단한 서블릿 매핑은 애너테이션을 사용하고, 복잡한 필터와 리스너 설정이나 환경별 설정이 필요한 경우에는 web.xml을 사용하는 방식으로 혼합 사용이 가능합니다.


요약

  • @WebServlet 애너테이션은 서블릿 매핑을 간단하고 직관적으로 설정할 수 있는 방법입니다.
  • 코드와 설정을 한 곳에서 관리할 수 있어, 소규모 프로젝트나 간단한 서블릿 매핑에는 애너테이션이 유리합니다.
  • web.xml은 복잡한 설정이 필요한 경우에 유리하며, 보안 설정, 필터, 리스너 등 전체 애플리케이션 설정이 필요한 경우 여전히 중요한 역할을 합니다.
  • 두 방식을 혼합하여 사용하는 것도 가능하며, 애플리케이션의 요구 사항에 따라 유연하게 선택할 수 있습니다.

0개의 댓글

관련 채용 정보