0. 들어가며
웹 애플리케이션을 개발하다 보면, 클라이언트의 요청(Request)을 처리하고 서버의 응답(Response)을 전달하는 과정이 핵심이 됩니다.
이번 글에서는 JSP/Servlet에서 request와 response 객체의 주요 속성과 조작 방법을 정리해보겠습니다.
1. Request 객체
request 객체는 클라이언트가 서버로 보낸 요청 정보를 담고 있으며 서버 내부에서 JSP나 서블릿 간 데이터 전달, 파라미터 조회, 세션 관리 등 다양한 기능을 제공합니다.
구분설정/조작 방법설명
| 속성(Attribute) | request.setAttribute("key", value) | 서버 내부에서 JSP나 서블릿 간 데이터 전달 |
| 세션(Session) | request.getSession() / request.getSession(true) | 세션 객체 생성 또는 가져오기 |
| 파라미터 | request.getParameter("param") | 클라이언트 전송 데이터 가져오기 (읽기 전용) |
| 요청 속성 제거 | request.removeAttribute("key") | request에 설정한 속성 삭제 |
| 인코딩 | request.setCharacterEncoding("UTF-8") | POST 요청 바디 인코딩 설정 (반드시 데이터 읽기 전에 호출) |
| 요청 헤더 | 읽기만 가능 | request.getHeader("name"), request.getHeaders("name") |
| 요청 방식 | 읽기만 가능 | request.getMethod() → GET, POST 등 |
| 요청 URL 정보 | 읽기만 가능 | request.getRequestURI(), request.getContextPath() 등 |
| Dispatcher | request.getRequestDispatcher("path") | 포워딩/인클루드 시 경로 지정 |
예시
// 파라미터 조회
String username = request.getParameter("username");
// 속성 설정
request.setAttribute("greeting", "Hello World");
// 다른 JSP로 포워딩
request.getRequestDispatcher("/welcome.jsp").forward(request, response);
2. Response 객체
response 객체는 서버가 클라이언트로 보내는 응답을 처리합니다. 상태 코드, 리다이렉트, 콘텐츠 타입, 헤더, 쿠키 등 다양한 설정이 가능합니다.
구분설정/조작 방법설명
| 상태 코드 | response.setStatus(int code) | HTTP 상태 코드 설정 (200, 404, 500 등) |
| 에러 발생 | response.sendError(int code, String msg) | 특정 상태 코드와 메시지 전송 |
| 리다이렉트 | response.sendRedirect("url") | 클라이언트 리다이렉트 |
| 콘텐츠 타입 | response.setContentType("text/html;charset=UTF-8") | MIME 타입 + 문자 인코딩 |
| 캐시 제어 | response.setHeader("Cache-Control", "no-cache") | 브라우저 캐시 설정 |
| 쿠키 | response.addCookie(Cookie c) | 클라이언트에 쿠키 전송 |
| 출력 버퍼 | response.setBufferSize(int size) | 응답 버퍼 크기 설정 |
| 플러시 여부 | response.flushBuffer() | 버퍼 내용 강제 전송 |
| 헤더 | response.setHeader("name", "value") / addHeader | 응답 헤더 설정 |
| 인코딩 | response.setCharacterEncoding("UTF-8") | 출력 데이터 문자 인코딩 설정 |
| Content-Length | response.setContentLength(int len) | 응답 데이터 길이 명시 |
| Content-Disposition | response.setHeader("Content-Disposition", "attachment; filename=test.txt") | 다운로드 파일 이름 지정 |
| MIME 타입 | response.setContentType("application/json") | JSON, HTML, XML 등 |
예시
// 상태 코드 설정
response.setStatus(HttpServletResponse.SC_OK);
// JSON 응답
response.setContentType("application/json");
response.getWriter().write("{\"result\":\"success\"}");
// 파일 다운로드
response.setHeader("Content-Disposition", "attachment; filename=example.txt");
마치며
이번 글에서는 JSP/Servlet 개발에서 Request와 Response 객체의 주요 기능을 정리했습니다.
- request: 클라이언트 요청 데이터, 세션, 속성 관리
- response: 서버 응답, 상태 코드, 리다이렉트, 콘텐츠 타입, 헤더 제어