포스트

Scope

Scope

내장객체의 영역 Scope

내장객체의 영역이란

  • 각 객체가 저장되는 메모리의 유효기간
  • page 영역 : 동일한 페이지에서만 공유 –> 페이지를 벗어나면 소멸
  • request 영역 : 하나의 요청에 의해 호출된 페이지와 포워드(요청전달)된 페이지까지 공유
  • session 영역 : 클라이언트가 처음 접속한 후 웹 브라우저를 닫을 때까지 공유
  • application 영역 : 한 번 저장되면 웹 어플리케이션이 종료될 때까지 유지

범위의 크기 : application > session > request > page

영역이 제공하는 주요 메서드

void setAttribute(String name, Object value)

  • 각 영역에 속성을 저장
  • 첫 번째 인수는 속성명, 두 번째 인수는 저장할 값
  • 값의 타입은 Object이므로 모든 타입의 객체를 저장

Object getAttribute(String name)

  • 영역에 저장된 속성값을 얻음
  • Object 로 자동 형변환되어 저장 –> 원래 타입으로 형변환 후 사용

void removeAttribute(String name)

  • 영역에 저장된 속성을 삭제
  • 삭제할 속성명이 존재하지 않더라도 에러는 발생하지 않음

데이터 전송 객체(DTO)

  • Data Transfer Object
  • 주로 데이터를 저장하거나 전송하는 데 쓰이는 객체
  • 다른 로직 없이 순수하게 데이터만을 담음
  • 데이터만 가지고 있는 객체라 하여 값 객체(value Object, VO)라고도 함
  • JavaBeans 규약에 따라 작성

자바빈즈 규약

  • 자바빈즈는 기본(default) 패키지 이외의 패키지에 속해야 함
  • 멤버 변수(속성)의 접근 지정자는 private 로 선언
  • 기본 생성자가 있어야 함
  • 멤버 변수에 접근할 수 있는 getter/setter 메서드가 있어야 함
  • 게터/세터 메서드의 접근 지정자는 public 선언

page 영역

  • 기본적으로 클라이언트의 요청을 처리하는 데 관여하는 JSP 페이지마다 하나씩 생성
  • 각 JSP 페이지는 page 영역을 사용하기 위한 pageContext 객체를 할당
  • pageContext 에 저장된 정보는 해당 페이지에서만 사용가능 –> 페이지를 벗어나면 소멸
  • include 지시어로 포함한 파일은 하나의 페이지로 통합되어 page 영역이 공유

request 영역

  • 클라이언트가 요청을 할 때마다 새로운 request 객체가 생성
  • 같은 요청을 처리하는 데 사용되는 모든 JSP 페이지가 공유
  • 저장된 정보는 현재 페이지와 포워드된 페이지까지 공유
  • 단, 페이지 이동 시에는 소멸되어 사용할 수 없음
  • 즉 하나의 요청에 대한 응답이 완료될 때 소멸

session 영역

  • 클라이언트가 웹 브라우저를 최초로 열고난 후 닫을 때까지 요청되는 모든 페이지는 session 객체를 공유
  • 클라이언트가 서버에 접속해 있는 상태 혹은 단위가 session
  • 주로 회원인증 후 로그인 상태를 유지하는 처리에 사용 –> 포털사이트에서 웹 브라우저를 닫으면 자동 로그아웃

application 영역

  • 웹 어플리케이션은 단 하나의 application 객체만 생성
  • 클라이언트가 요청하는 모든 페이지가 application 객체를 공유
  • 웹 서버를 시작할 때만 들어가지며, 웹 서버를 내릴 때 삭제
  • 영역에 한 번 저장된 정보는 페이지를 이동하거나, 웹 브라우저를 닫았다가 새로 접속해도 삭제되지 않음
이 기사는 저작권자의 CC BY-NC 4.0 라이센스를 따릅니다.