1. request 객체 (HttpServletRequest)
1️⃣ 개념
- 클라이언트(브라우저)가 서버로 보낸 HTTP 요청 정보를 캡슐화한 객체
- 요청 데이터(파라미터, 헤더, 쿠키, 세션, HTTP 메서드 등)에 접근할 수 있음
2️⃣ 주요 역할
“클라이언트가 무엇을, 어떻게 요청했는가?”
3️⃣ 주요 정보 종류
1) 요청 파라미터
HTML form, query string 등을 통해 전달된 값
String id = request.getParameter("id");
String[] hobbies = request.getParameterValues("hobby");getParameter(): 단일 값
getParameterValues(): 다중 값 (checkbox 등)
2) HTTP 메서드 및 URI 정보
request.getMethod(); // GET, POST
request.getRequestURI(); // /login.do
request.getContextPath(); // /myapp
request.getServletPath(); // /login.do3) 헤더 정보
request.getHeader("User-Agent");
request.getHeader("Referer");4) 쿠키
Cookie[] cookies = request.getCookies();
5) 세션
HttpSession session = request.getSession();
session.setAttribute("user", user);6) 요청 바디 (POST 데이터)
BufferedReader br = request.getReader();(JSON, XML 등 직접 파싱할 때 사용)
4️⃣ 특징 요약
- 읽기 전용 성격
- 요청 1회당 1개 생성
- 클라이언트 → 서버 방향 데이터
2. response 객체 (HttpServletResponse)
1️⃣ 개념
- 서버가 클라이언트에게 보낼 HTTP 응답을 구성하는 객체
- 상태 코드, 헤더, 바디(HTML/JSON 등)를 설정
2️⃣ 주요 역할
“서버가 클라이언트에게 무엇을 돌려줄 것인가?”
3️⃣ 주요 기능
1) 응답 데이터 출력
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<h1>Hello Servlet</h1>");getWriter(): 문자 기반 출력
getOutputStream(): 바이너리 출력 (파일, 이미지)
2) HTTP 상태 코드
response.setStatus(HttpServletResponse.SC_OK); // 200
response.sendError(HttpServletResponse.SC_NOT_FOUND); // 4043) 리다이렉트
response.sendRedirect("login.jsp");- 클라이언트에게 새 요청을 지시
4) 헤더 설정
response.setHeader("Cache-Control", "no-cache");5) 쿠키 생성
Cookie cookie = new Cookie("token", "abc123");
cookie.setMaxAge(60 * 60);
response.addCookie(cookie);4️⃣ 특징 요약
- 쓰기 전용 성격
- 응답은 한 번만 전송 가능
- 서버 → 클라이언트 방향 데이터
3. request vs response 비교
구분 | request | response |
방향 | 클라이언트 → 서버 | 서버 → 클라이언트 |
목적 | 요청 정보 읽기 | 응답 정보 생성 |
주요 데이터 | 파라미터, 헤더, 세션 | HTML, JSON, 상태 코드 |
객체 생성 시점 | 요청 발생 시 | 요청과 동시에 |
4. 서블릿에서의 흐름 예제
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name = request.getParameter("name");
response.setContentType("text/plain; charset=UTF-8");
response.getWriter().println("Hello " + name);
}요약 흐름
- 클라이언트 요청 →
request생성
- 서블릿 로직 처리
response에 결과 작성
- 서버 → 클라이언트 응답 전송
5. 핵심 정리
request는 입력
response는 출력
- 서블릿은 요청을 해석하고 응답을 생성하는 컨트롤러 역할
그림으로 이해하기

Share article