서블릿에서 HttpServletRequest와 HttpServletResponse 사용법
서블릿에서 클라이언트의 요청을 처리하고, 서버의 응답을 생성하는 데 중요한 두 가지 객체가 HttpServletRequest
와 HttpServletResponse
입니다. 이 두 객체는 클라이언트와 서버 간의 데이터 교환을 담당하며, 다양한 메서드를 통해 클라이언트의 요청을 분석하고, 서버의 응답을 구성할 수 있습니다.
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>
▼ 실행 결과

결론
HttpServletRequest
와 HttpServletResponse
는 서블릿을 통해 클라이언트 요청을 처리하고, 서버의 응답을 생성하는 데 핵심적인 역할을 합니다. 클라이언트로부터 데이터를 가져오고, 서버에서 다양한 방식으로 응답을 구성할 수 있으며, 이러한 객체를 적절하게 활용하면 동적인 웹 애플리케이션을 쉽게 구현할 수 있습니다.
함께 보면 좋은 이전 게시글
- web.xml과 애너테이션으로 서블릿 매핑 및 GET/POST 요청 처리
- 서블릿에서 @WebServlet 애너테이션으로 여러 URL 패턴 처리하기
- JSP 내장 객체 사용법: request와 response
- 서블릿 생명주기 메서드와 @PostConstruct, @PreDestroy 활용
- JSP 액션 태그: include와 forward 사용법
이 글이 도움이 되셨다면 공유 부탁 드립니다.