서블릿에서 HttpServletRequest와 HttpServletResponse 사용법

서블릿에서 HttpServletRequest와 HttpServletResponse 사용법

서블릿에서 클라이언트의 요청을 처리하고, 서버의 응답을 생성하는 데 중요한 두 가지 객체가 HttpServletRequestHttpServletResponse입니다. 이 두 객체는 클라이언트와 서버 간의 데이터 교환을 담당하며, 다양한 메서드를 통해 클라이언트의 요청을 분석하고, 서버의 응답을 구성할 수 있습니다.

1. HttpServletRequest

HttpServletRequest는 클라이언트로부터 전송된 요청 정보를 서버에서 읽는 데 사용됩니다. 이를 통해 클라이언트가 보낸 데이터(예: 폼 데이터, URL 매개변수 등)를 얻을 수 있으며, 요청의 URL, HTTP 메서드(GET, POST 등), 헤더 정보 등을 확인할 수 있습니다.

주요 메서드:

  • getParameter(String name): 클라이언트가 보낸 특정 파라미터 값을 가져옵니다.
  • getMethod(): 요청된 HTTP 메서드를 가져옵니다. (예: GET, POST)
  • getRequestURL(), getRequestURI(): 클라이언트의 요청 URL 및 URI를 반환합니다.

2. HttpServletResponse

HttpServletResponse는 서버에서 클라이언트로 전송할 응답을 구성하는 데 사용됩니다. 서버는 이를 통해 HTML, JSON, XML 등의 콘텐츠를 생성하여 클라이언트에게 전송할 수 있습니다. 또한 응답의 상태 코드나 헤더를 설정하거나, 다른 페이지로 리다이렉트할 수 있습니다.

주요 메서드:

  • setContentType(String type): 응답의 MIME 타입을 설정합니다. (예: text/html, application/json)
  • getWriter(): 응답을 작성할 수 있는 출력 스트림을 반환합니다.
  • sendRedirect(String location): 클라이언트를 다른 페이지로 리다이렉트합니다.

3. 예제: 클라이언트 요청 처리 및 응답 생성

다음은 클라이언트가 HTML 폼을 통해 전송한 데이터를 HttpServletRequest로 받아 처리하고, 그 결과를 HttpServletResponse로 클라이언트에게 응답하는 예제입니다.

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 형식으로 클라이언트에게 전송합니다.

JSP 페이지: formPage.jsp

이 페이지에서 사용자가 이름과 이메일을 입력하고, 해당 데이터를 서블릿으로 전송합니다.

<%@ 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>
클라이언트 요청 처리 및 응답 생성 예제 코드 실행 결과 화면

결론

HttpServletRequestHttpServletResponse는 서블릿을 통해 클라이언트 요청을 처리하고, 서버의 응답을 생성하는 데 핵심적인 역할을 합니다. 클라이언트로부터 데이터를 가져오고, 서버에서 다양한 방식으로 응답을 구성할 수 있으며, 이러한 객체를 적절하게 활용하면 동적인 웹 애플리케이션을 쉽게 구현할 수 있습니다.

함께 보면 좋은 이전 게시글

위로 스크롤