HttpServletRequest와 HttpServletResponse는 서블릿 API에서 클라이언트의 요청과 서버의 응답을 처리하는 데 사용되는 주요 인터페이스입니다. 이 두 객체는 서블릿이 요청을 처리하고, 결과를 클라이언트에게 전달하는 데 필요한 데이터를 제공합니다.
HttpServletRequest 객체는 클라이언트가 서버에 전송한 HTTP 요청 정보를 포함하고 있습니다. 클라이언트가 전송한 요청의 메타데이터와 데이터(쿼리 파라미터, 헤더, 쿠키, 세션 정보 등)에 접근할 수 있도록 다양한 메서드를 제공합니다.
request.getParameter("username")
request.getParameterValues("hobbies")
request.getMethod()
request.getRequestURI()
User-Agent
헤더를 통해 클라이언트의 브라우저 정보를 얻을 수 있습니다.request.getHeader("User-Agent")
request.getSession()
request.getRemoteAddr()
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String userAgent = request.getHeader("User-Agent");
String requestURI = request.getRequestURI();
System.out.println("사용자 이름: " + username);
System.out.println("User-Agent: " + userAgent);
System.out.println("Request URI: " + requestURI);
}
HttpServletResponse 객체는 서버가 클라이언트로 전송할 HTTP 응답을 구성하는 데 필요한 정보를 제공합니다. 이 객체를 통해 응답 헤더, 상태 코드, 컨텐츠 유형 등을 설정하고, 최종적으로 클라이언트에게 데이터를 보낼 수 있습니다.
text/html
, application/json
등을 지정할 수 있습니다.response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.setStatus(HttpServletResponse.SC_OK);
PrintWriter out = response.getWriter(); out.println("<h1>Hello, World!</h1>");
response.sendRedirect("/home");
response.addCookie(new Cookie("user", "JohnDoe"));
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
response.setStatus(HttpServletResponse.SC_OK);
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>Hello, this is the server's response!</h1>");
out.println("</body></html>");
}
다음은 사용자로부터 요청을 받아 처리하고 응답을 생성하는 간단한 예제입니다.
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;
import java.io.PrintWriter;
@WebServlet("/greet")
public class GreetServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 요청 파라미터에서 이름 가져오기
String name = request.getParameter("name");
// 응답 설정
response.setContentType("text/html;charset=UTF-8");
// 응답 출력
PrintWriter out = response.getWriter();
out.println("<html><body>");
if (name != null && !name.isEmpty()) {
out.println("<h1>안녕하세요, " + name + "님!</h1>");
} else {
out.println("<h1>안녕하세요, 방문자님!</h1>");
}
out.println("</body></html>");
}
}
request.getParameter("name")
을 통해 클라이언트가 입력한 이름을 가져옵니다.response.setContentType("text/html;charset=UTF-8");
로 응답 유형과 인코딩을 설정하고, PrintWriter
를 통해 HTML 응답을 출력합니다.이 두 객체는 서블릿에서 요청과 응답을 처리하는 기본적인 도구로, HTTP 통신을 통해 클라이언트와 서버 간에 데이터를 주고받는 데 중요한 역할을 합니다.