Notice
Recent Posts
Recent Comments
Link
쯔이's Dev
데이터를 담을 수 있는 JSP 내장객체의 종류 본문
반응형
서블릿/자바 웹 애플리케이션에서 데이터를 저장하고 공유할 수 있는 **4가지 스코프(scope)**를 설명하는 것이다.
각각의 스코프는 데이터를 유지할 수 있는 범위와 지속 시간이 다르며, 이를 적절히 사용하는 것이 중요하다
< 종류 >
1. ServletContext (Application Scope)
- 정의 : 웹 애플리케이션당 하나만 존재하는 객체.
- 하나의 애플리케이션(프로젝트)에서 모든 서블릿, JSP, 그리고 다른 웹 구성 요소가 이 객체를 공유할 수 있다.
- 특징:
- 전역 공유: 애플리케이션 전역에서 공유된다. 즉, 애플리케이션이 실행되는 동안 모든 사용자가 접근할 수 있다.
- 수명: 애플리케이션이 시작될 때 생성되고, 애플리케이션이 종료될 때까지 유지됨.
- 사용 사례: 애플리케이션 전역에서 필요한 데이터를 저장할 때 사용. 예를 들어, 전역 설정 정보나 애플리케이션 상태 같은 정보를 저장한다.
ServletContext context = getServletContext();
context.setAttribute("globalData", "This is shared globally");
2. HttpSession (Session Scope)
- 정의: 각 브라우저 세션마다 하나씩 생성되는 객체.
- 사용자의 상태를 유지하기 위해 사용된다. 예를 들어, 사용자가 로그인한 상태나 쇼핑 카트 정보 등을 세션에 저장할 수 있다.
- 특징:
- 사용자별 공유: 각 사용자가 고유한 세션을 가지며, 해당 브라우저에서 요청할 때마다 세션이 유지된다.
- 세션 ID: 서버는 각 사용자에게 고유한 세션 ID를 부여하며, 이를 통해 서버는 사용자를 구분할 수 있다.
- 수명: 세션은 기본적으로 일정 시간이 지나면(예: 30분) 만료되거나, 사용자가 브라우저를 닫으면 사라진다. 하지만 사용자가 세션을 유지하면 로그인 상태를 유지할 수 있다.
- 사용 사례: 주로 로그인 상태 유지, 쇼핑 카트, 사용자 세션 정보 등을 저장.
HttpSession session = request.getSession();
session.setAttribute("username", "john_doe");
3. HttpServletRequest (Request Scope)
- 정의: HttpServletRequest 객체는 HTTP 요청이 발생할 때마다 생성되며, 그 요청에 대한 데이터를 저장할 수 있다. 포워딩할 때도 데이터가 유지된다.
- 특징:
- 요청 단위: 각 요청마다 객체가 생성. 한 번의 HTTP 요청이 끝나면 해당 요청과 관련된 데이터는 사라진다.
- 포워딩 가능: 요청이 다른 서블릿이나 JSP로 포워딩(forward) 될 때까지 데이터가 유지된다.
- 수명: 요청이 끝나면 사라진다.
- 사용 사례: 클라이언트가 보내는 요청에 대한 처리 결과를 전달할 때 사용한다.
request.setAttribute("message", "Request level data");
RequestDispatcher dispatcher = request.getRequestDispatcher("/result.jsp");
dispatcher.forward(request, response);
4. PageContext (Page Scope)
- 정의: PageContext는 JSP 페이지마다 고유하게 존재하는 객체로, JSP 페이지 내에서 데이터를 저장하고 사용할 수 있다.
- 특징:
- 페이지 단위: 각 JSP 페이지마다 하나씩 존재하며, 페이지 내에서만 데이터를 공유할 수 있다.
- 수명: 해당 페이지 내에서만 데이터를 유지하며, 다른 JSP 페이지로 이동하면 데이터는 유지되지 않는다.
- 사용 사례: 특정 JSP 페이지 내에서만 유효한 데이터를 저장할 때 사용한다.
pageContext.setAttribute("localData", "This is available only in this page");
요약
- ServletContext (Application Scope): 애플리케이션 전역에서 공유되며, 애플리케이션 시작부터 종료까지 유지된다. 가장 넓은 범위.
- HttpSession (Session Scope): 각 사용자의 세션별로 데이터가 유지되며, 주로 사용자 정보를 저장할 때 사용된다.
- HttpServletRequest (Request Scope): 요청 단위로 데이터를 저장하며, 요청을 처리하는 동안만 유지된다.
- PageContext (Page Scope): 특정 JSP 페이지 내에서만 데이터를 저장하고 공유할 수 있다. 가장 좁은 범위.
728x90
반응형