TIL 48 | [JSP] 내장 객체의 영역(Scope)

Yoonsik·2022년 10월 9일
0

JSP

목록 보기
7/12

⛓ 내장 객체의 영역이란 ?

내장 객체의 영역은 각 객체가 저장되는 메모리의 유효기간이라고 이해하면 됩니다.

클래스 단위로 구성된 자바 프로그래밍에서의 지역변수를 생각해 보면, 메소드 내에서 선언된 변수는 해당 메소드를 벗어나면 소멸됩니다.
( + for문 내에서 선언된 변수 또한 해당 for문이 종료되는 순간 메모리에서 소멸된다.)

이런 자바 와는 달리, JSP와 같은 웹 애플리케이션은 페이지 단위로 구성됩니다.
A페이지에서 선언한 변수를 B페이지로 이동한 후에도 접근할 수 있게 하기 위해서 JSP에서는 영역을 통해 내장 객체에 저장된 속성값을 공유할 수 있도록 하였습니다.

🔗 내장 객체의 영역(4가지)

내장 객체 영역별 범위의 크기

page < request < session < application

page 영역 - 기본객체 : pageContext

하나의 JSP페이지(하나의 JSP 파일은 하나의 페이지)를 처리할 때 사용되는 영역입니다.
동일한 페이지에서만 공유되며, 페이지를 벗어나면 소멸됩니다.

request 영역 - 기본객체 : request

하나의 HTTP 요청을 처리할 때 사용되는 영역입니다.
하나의 요청에 의해 호출된 페이지와 포워드(요청 전달 - 이동)된 페이지까지 공유됩니다.

하나의 요청과 관련된 한개의 jsp파일 영역으로도 만들어질 수 있지만 공유되는 여러개의 jsp파일의 영역에 만들어질 수도 있습니다.
포워드된 request 영역까지 포함한 것이 하나의 영역입니다.

JSP 액션태그 <forward>를 이용하여 페이지를 이동(요청 전달)할 시, 처음 호출된 페이지의 요청정보를 이동된 페이지에 그대로 전달하기 때문에 하나의 요청을 여러 페이지가 공유하는 꼴이 됩니다.
request 영역은 하나의 요청을 처리할 때 사용되는 영역이기 때문에 해당 요청을 최초로 전달받은 페이지와 포워드된(요청 전달) 페이지까지 공유됩니다.

클라이언트의 요청이들어오는 순간 request 영역이 생성되며,
서버에서 해당 요청에대한 response를 했을 때 request영역은 소멸됩니다.

session 영역 - 기본객체 : session

하나의 웹 브라우저와 관련된 영역입니다.
클라이언트가 처음 접속한 후, 웹 브라우저를 닫을 때(종료)까지 공유됩니다.

브라우저 단위이기 때문에 같은 ip를 가진 PC에서 접속을해도 웹 브라우저가 다르면 다른 session으로 구분됩니다.

기본적으로는 브라우저가 종료되면 브라우저 영역이 사라지게 되지만, 개발자에 의해 유효한 시간이 설정되어 있는 경우 해당 시간이 종료되면 브라우저영역이 사라지기도 합니다.

applicaton 영역 - 기본객체 : application

하나의 웹 애플리케이션과 관련된 영역입니다.
한번 저장되면 웹 애플리케이션이 종료될 때까지 유지됩니다.


⛓ JSP 기본 객체의 속성(attribute)

속성(attribute)은 어느 영역에서 사용할지 지정하여 지역변수 같이 사용이 가능합니다.

기본객체 pageContext, request, session, application은 모두 속성을 가지며, 속성은 각각 기본객체가 존재하는 동안에 사용 가능합니다.
JSP페이지 사이에서 정보를 주고받거나 공유하기 위한 목적으로 사용되며, <속성이름(name), 값(value)> 형태를 지닙니다.
또, 서로 다른 이름을 가진 속성을 여러개 포함할 수 있습니다.

🔗 기본 객체의 속성 관련 메소드

메소드리턴타입설명
setAttribute(String name, Object value)void이름이 name인 속성의 값을 value로 지정한다.
자바의 최상위 부모 클래스인 Object타입의 value이기 때문에 값(value)를 아무거나 지정 가능하다.
Object 타입으로 업캐스팅 되어 저장된다. 때문에 해당 속성을 사용할 때는 알맞은 형변환이 필요하다.ㅣ
getAttribute(String name)Object이름이 name인 속성의 값을 구한다.
지정한 name의 속성이 존재하지 않을 경우 null을 반환한다.
removeAttribute(Strnig name)void이름이 name인 속성을 삭제한다.
getAttributeNames()java.util.Enumeration속성의 이름 목록을 구한다. (pageContext 기본 객체에서는 해당 메소드 제공 X)
profile
꾸준함의 힘

0개의 댓글