Servlet은 클라이언트의 요청을 처리하고 응답을 생성하는 Java 기반의 서버 측 프로그램입니다. 이 과정에서 HttpServletRequest와 HttpServletResponse는 각각 클라이언트와 서버 간의 데이터 흐름을 담당하며 핵심 역할을 합니다.
HttpServletRequest는 클라이언트가 서버로 보낸 요청 정보를 담고 있으며, 서버에서 이를 활용해 요청을 처리합니다.
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 폼 데이터 읽기
String username = request.getParameter("username");
String password = request.getParameter("password");
// 세션 생성 및 설정
HttpSession session = request.getSession();
session.setAttribute("user", username);
// 응답 처리
response.getWriter().println("Welcome, " + username);
}
HttpServletResponse는 서버에서 생성한 응답을 클라이언트로 전송하는 데 사용됩니다.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 쿠키 설정
Cookie cookie = new Cookie("sessionId", "12345");
cookie.setMaxAge(3600); // 1시간 유지
response.addCookie(cookie);
// 상태 코드 설정
response.setStatus(HttpServletResponse.SC_OK);
// HTML 응답 출력
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html><body><h1>Response Example</h1></body></html>");
}
| 메서드 | 설명 |
|---|---|
getParameter(String name) | 단일 요청 파라미터 값을 가져옵니다. |
getParameterNames() | 요청 파라미터 이름들의 열거형을 반환합니다. |
getParameterValues(String name) | 동일한 이름의 다중 요청 파라미터 값을 배열로 반환합니다. |
getCookies() | 클라이언트가 전송한 쿠키 배열을 반환합니다. |
getSession() | 현재 세션을 반환하며 없으면 새로 생성합니다. |
getHeader(String name) | 요청 헤더 값을 반환합니다. |
getRequestURI() | 요청된 URI를 반환합니다. |
getMethod() | 요청 방식(GET, POST 등)을 반환합니다. |
| 메서드 | 설명 |
|---|---|
setContentType(String type) | 응답의 MIME 타입을 설정합니다. |
setStatus(int sc) | 응답 상태 코드를 설정합니다. |
addCookie(Cookie cookie) | 응답에 쿠키를 추가합니다. |
sendRedirect(String location) | 클라이언트를 지정된 URL로 리다이렉트합니다. |
getWriter() | 클라이언트에 텍스트 데이터를 출력하기 위한 PrintWriter를 반환합니다. |
getOutputStream() | 바이너리 데이터를 출력하기 위한 OutputStream을 반환합니다. |
HttpServletRequest 객체를 통해 분석하고 필요한 정보를 추출합니다. HttpServletResponse 객체를 통해 클라이언트로 응답합니다. HttpServletRequest와 HttpServletResponse는 웹 애플리케이션에서 클라이언트와 서버 간 데이터 흐름을 관리하는 핵심 도구입니다. 이를 효율적으로 사용하면 동적 웹 애플리케이션을 개발할 수 있으며, 사용자의 요구에 맞춘 동작 구현도 가능합니다🚀