서블릿에서 GET 요청 파라미터와 POST 폼 데이터 처리하기

서블릿에서 GET 요청 파라미터와 POST 폼 데이터 처리하기

서블릿(Servlet)은 클라이언트가 요청한 데이터를 서버에서 처리하는 데 매우 유용합니다. 특히, GET 요청과 POST 요청은 웹 애플리케이션에서 가장 자주 사용되는 HTTP 메서드입니다. 이 글에서는 서블릿에서 URL 파라미터를 GET 요청으로 처리하고, HTML 폼 데이터를 POST 요청으로 처리하는 방법을 예제로 알아보겠습니다.

1. GET 요청에서 URL 파라미터 처리

GET 요청은 주로 URL에 파라미터를 포함하여 서버에 데이터를 전송합니다. 이때 URL에 포함된 파라미터는 HttpServletRequest 객체의 getParameter() 메서드를 사용해 읽어올 수 있습니다.

GET 요청 예제

package com.bluesharehub;

import javax.servlet.ServletException;
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("/greet2")
public class GreetServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // URL 파라미터에서 name 값을 가져옴
        String name = request.getParameter("name");
        if (name == null) {
            name = "Guest"; // 기본값 설정
        }

        // 응답의 콘텐츠 타입 설정
        response.setContentType("text/html;charset=UTF-8");

        // 클라이언트에게 응답으로 HTML 출력
        response.getWriter().write("<h1>Hello, " + name + "!</h1>");
    }
}

위 코드에서는 /greet2?name=BlueShare와 같이 요청하면, “Hello, BlueShare!” 라는 메시지가 출력됩니다. 만약 name 파라미터가 없으면 기본적으로 “Guest”로 처리합니다.

GET 요청에서 URL 파라미터 처리 예제 코드 실행 결과 화면

2. POST 요청에서 폼 데이터 처리

POST 요청은 주로 폼 데이터를 서버에 전송할 때 사용됩니다. 이때 서블릿에서는 doPost() 메서드를 사용하여 클라이언트로부터 전송된 데이터를 처리할 수 있습니다.

POST 요청 예제

package com.bluesharehub;

import javax.servlet.ServletException;
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("/formHandler")
public class FormHandlerServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 클라이언트로부터 전달된 폼 데이터 읽기
        String username = request.getParameter("username");
        String email = request.getParameter("email");

        // 응답의 콘텐츠 타입 설정
        response.setContentType("text/html;charset=UTF-8");

        // 응답으로 HTML 생성
        response.getWriter().write("<html><body>");
        response.getWriter().write("<h1>사용자 정보</h1>");
        response.getWriter().write("<p>이름: " + username + "</p>");
        response.getWriter().write("<p>이메일: " + email + "</p>");
        response.getWriter().write("</body></html>");
    }
}

위 코드는 클라이언트가 폼을 통해 서버에 데이터를 전송하면, 서블릿이 그 데이터를 받아 처리하는 예제입니다. 이름과 이메일을 전송하면 해당 정보를 응답으로 HTML 형태로 출력합니다.

3. HTML 폼 예제 (JSP)

다음은 사용자 이름과 이메일을 입력받아 서블릿으로 전송하는 HTML 폼 예제입니다. 이 예제에서는 POST 요청으로 데이터를 서버로 전송합니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>폼 데이터 입력</title>
</head>
<body>
    <h1>사용자 정보 입력</h1>
    <form action="formHandler" method="post">
        <label for="username">이름:</label>
        <input type="text" id="username" name="username" required><br><br>
        
        <label for="email">이메일:</label>
        <input type="email" id="email" name="email" required><br><br>
        
        <input type="submit" value="제출">
    </form>
</body>
</html>

이 폼은 사용자가 이름과 이메일을 입력한 후, 데이터를 POST 방식으로 /formHandler 서블릿으로 전송합니다.

POST 요청에서 폼 데이터 처리 예제 코드 실행 결과 화면

결론

서블릿을 이용하여 클라이언트의 GET 요청과 POST 요청을 처리하는 방법을 살펴보았습니다. GET 요청은 URL 파라미터를 통해 데이터를 전달받아 처리하고, POST 요청은 주로 폼 데이터를 서버에 전송할 때 사용됩니다. 이러한 요청 처리 방식을 적절하게 활용하면 다양한 웹 애플리케이션을 구현할 수 있습니다.

함께 보면 좋은 이전 게시글

위로 스크롤