- 서블릿 저장소 Request, Session, Context 차이와 사용법2025년 04월 21일
- chantleman
- 작성자
- 2025.04.21.:30
웹 개발을 하다 보면 사용자 정보, 설정값, 임시 데이터 등 다양한 정보를 저장하고 공유해야 하는 상황이 자주 생긴당
그럴 때 우리는 request, session, context(ServletContext) 같은 저장소를 사용하게 되는데하지만 이 세 가지, 비슷한 것 같으면서도 각자 저장 범위, 생명주기, 사용 목적이 달라서 헷갈리기 쉽당 ...
1. Request 객체
✅ 특징
- 저장 범위: 현재 HTTP 요청(Request) 내에서만 유효
- 생명주기: 클라이언트가 요청 → 서버가 응답할 때까지 (응답 후 소멸)
- 사용 예시: 페이지 간 포워딩, form 입력값 전달, 일회성 에러 메시지 등
✅ 예시
// A.jsp request.setAttribute("msg", "Hello from A.jsp"); RequestDispatcher dispatcher = request.getRequestDispatcher("B.jsp"); dispatcher.forward(request, response); // B.jsp <%= request.getAttribute("msg") %>
🧠 핵심 요약
- 같은 요청 내에서만 데이터 공유 가능
- 응답이 끝나면 데이터도 사라짐
2. Session 객체
✅ 특징
- 저장 범위: 같은 사용자(브라우저)의 여러 요청 간 공유
- 생명주기: 브라우저 종료 또는 일정 시간 미사용(세션 만료) 시까지
- 사용 예시: 로그인 상태 유지, 장바구니, 사용자 설정 저장 등
✅ 예시
// 로그인 처리 서블릿 HttpSession session = request.getSession(); session.setAttribute("userId", "hihi"); // 다른 페이지 <%= session.getAttribute("userId") %>
🧠 핵심 요약
- 사용자 단위로 데이터를 저장
- 여러 페이지/요청에서도 데이터 유지 가능
3. Context 객체 (ServletContext, Application)
✅ 특징
- 저장 범위: 웹 애플리케이션 전체 (모든 사용자, 모든 서블릿)
- 생명주기: 서버가 켜질 때 생성 → 서버가 꺼질 때 소멸
- 사용 예시: 공통 설정값, 전역 자원(예: 전체 방문자 수) 저장 등
✅ 예시
// 방문자 수 증가 ServletContext context = getServletContext(); Integer count = (Integer) context.getAttribute("visitorCount"); if (count == null) count = 0; context.setAttribute("visitorCount", count + 1);
🧠 핵심 요약
- 애플리케이션 전역에서 공유
- 모든 사용자, 서블릿, JSP 간 데이터 공유 가능
구분 저장 범위 생명주기 주요 용도 Request 하나의 요청 내 요청 - 응답까지 일회성 데이터 전달
(폼값, 메시지 등)Session 같은 사용자 브라우저 종료 or 세션 만료까지 로그인 정보, 장바구니 등
사용자별 데이터Context
(ServletContext)모든 사용자, 모든 서블릿 서버 종료까지 전역 설정, 공통 자원 공유 언제 어떤 저장소를 써야 할까?
- ❓ 폼 전송 후 결과 메시지를 보여주고 싶다 → request
- ❓ 로그인한 사용자의 정보를 계속 유지하고 싶다 → session
- ❓ 모든 사용자에게 적용되는 설정값이 있다 → context
웹 애플리케이션에서 데이터를 저장할 때는
"누구와", "얼마동안", "어디서" 데이터를 공유할 것인가?
이 세가지 기준을 잘 생각해서 request, session, context 중에 적절한 저장소를 선택하면 된당 !
728x90'자바' 카테고리의 다른 글
자바 기초 (0) 2024.12.22 MyBatis ResultMap - Collection, Association (0) 2024.11.20 iterator (1) 2024.11.09 selectkey (0) 2024.10.15 forward, sendredirect (0) 2024.10.15 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)