web.xml과 애너테이션으로 서블릿 매핑 및 GET/POST 요청 처리
서블릿(Servlet)은 자바 기반의 서버 측 기술로, 클라이언트의 HTTP 요청을 처리하고 그에 대한 응답을 생성하는 역할을 합니다. JSP와 유사한 기능을 하지만, 서블릿은 순수 자바로 작성되어 있으며, 보다 명시적으로 서버 요청을 처리할 수 있습니다. 이번 글에서는 서블릿의 기본 개념과 설정 방법을 살펴보고, 실제로 GET 및 POST 요청을 처리하는 예제를 알아보겠습니다.
1. 서블릿이란?
서블릿은 웹 애플리케이션에서 동적으로 데이터를 처리하고 응답하는 컴포넌트입니다. 서블릿은 다음과 같은 역할을 합니다.
- 클라이언트의 요청을 수신
- 비즈니스 로직을 처리
- HTML, JSON 등의 응답 생성
서블릿은 JSP와 달리 HTML 코드와 자바 코드가 혼합되지 않고, 더 명확하게 서버 측 로직을 처리할 수 있는 이점이 있습니다.
2. 서블릿 설정 및 환경 구성
2.1 전통적 방식 (web.xml을 사용한 서블릿 설정)
web.xml 파일을 사용해 서블릿을 설정하는 방법은 전통적인 방식입니다. 프로젝트의 WEB-INF
디렉토리에 위치한 web.xml
파일을 수정하여 서블릿을 매핑할 수 있습니다.
web.xml을 사용한 서블릿 설정 예제
<web-app>
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.bluesharehub.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
위 설정은 /hello
경로로 들어오는 요청을 HelloServlet
클래스에 매핑하는 방식입니다.
서블릿 코드 (HelloServlet.java)
package com.bluesharehub;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 응답의 콘텐츠 타입 설정
response.setContentType("text/html");
// 클라이언트에게 반환할 HTML 내용 작성
response.getWriter().write("<h1>Hello, BlueShareHub!</h1>");
}
}
실행 결과

2.2 애너테이션을 사용한 서블릿 설정
애너테이션을 사용하면 서블릿 설정을 더욱 간편하게 처리할 수 있습니다. @WebServlet
애너테이션을 사용하여 서블릿을 매핑할 수 있습니다.
애너테이션을 사용한 서블릿 설정 예제
package com.bluesharehub;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/hello2")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
response.setContentType("text/html");
response.getWriter().write("<h1>Hello, BlueShareHub!</h1>");
}
}
위 코드는 애너테이션으로 간편하게 서블릿을 매핑한 방식입니다. 이제 /hello2
경로로 요청이 들어오면 HelloServlet
클래스에서 해당 요청을 처리하고, 클라이언트에게 응답을 반환합니다.
실행 결과

3. POST 요청 처리 예제
서블릿은 GET 요청뿐만 아니라 POST 요청도 처리할 수 있습니다. POST 요청은 주로 클라이언트가 서버에 데이터를 전송할 때 사용됩니다. POST 요청은 서블릿의 doPost
메서드를 사용하여 처리됩니다.
POST 요청 처리 예제 코드
@WebServlet("/submit")
public class SubmitServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
// 클라이언트로부터 전달된 데이터 (예: form 데이터)
String username = request.getParameter("username");
String password = request.getParameter("password");
// 간단한 응답 처리
response.setContentType("text/html");
if (username != null && password != null) {
response.getWriter().write("<h1>Welcome, " + username + "!</h1>");
} else {
response.getWriter().write("<h1>Missing username or password</h1>");
}
}
}
이 예제에서는 /submit
경로로 POST 요청이 들어올 때 doPost
메서드에서 클라이언트로부터 전달된 데이터를 처리합니다. 이 방식은 보통 로그인 폼이나 데이터 입력 폼에서 사용됩니다. 사용자가 HTML 폼을 통해 username
과 password
를 제출하면 서블릿이 그 데이터를 받아 응답을 생성하게 됩니다.
함께 보면 좋은 이전 게시글
- JSP/Servlet 웹 애플리케이션에서 web.xml 활용한 에러 페이지 설정
- JSP 내장 객체 사용법: request와 response
- JSP에서 Tomcat 서버와 MariaDB 연동: 커넥션 풀 설정 및 테스트
- JSP에서 JDBC로 MariaDB 쿼리 작성 및 실행 방법
- JSP 액션 태그: include와 forward 사용법
이 글이 도움이 되셨다면 공유 부탁 드립니다.