
각 내장객체는 저장된 속성값을 공유할 수 있는 영역이 지정되어있습니다.

page 영역
동일한 페이지 내에서만 속성을 공유합니다. 해당 페이지 벗어날 시 page에 저장된 속성 공유 불가
실제 사용시는 pageContext 객체를 이용합니다.
request 영역
기본적으로, 요청한 페이지와 요청받은 페이지끼리만 속성을 공유하지만,
getRequestDispatcher 을 이용해 화면만 이동되고 URL은그대로 유지된채
요청&응답을 전달받은 페이지까지도 공유 가능합니다.
요청 페이지와 요청 받은 페이지 외 다른 페이지로 이동 시 request에 저장된 속성 공유 불가
session 영역
클라이언트가 처음 접속한 후 웹 브라우저를 닫을 때 까지 속성을 공유합니다.
웹 브라우저는 브라우저 내 탭(창) 하나하나가 별도의 프로세스지만,
웹 브라우저 내 알고리즘에 의해 동일한 브라우저 내 모든 탭(창)은 세션을 공유합니다.
* 프로세스 : 메모리에 올라가 실행되고 있는 프로그램
웹 브라우저 닫기 전까지 해당 웹 서비스 내 모든 페이지에서 session에 저장된 속성 공유 가능.
application 영역
한 번 속성이 저장되면 웹 어플리케이션이 종료될 때까지 application에 저장된 속성이 유지됩니다. (웹 브라우저 종료가 아니라 웹 애플리케이션 자체의 종료를 의미하기 때문에 웹브라우저를 닫고 다시 들어와도 속성은 유지됩니다.)
application > session > request > page 순으로 영역의 큽니다.
어플리케이션 내 구조에 따라 더 큰 영역이 더 작은 영역을 하나 이상 포함할 수 있습니다.
// 작성법
영역명.메서드명();
// 사용예시
<%
pageContext.setAttibute("name1", "값1 입니다.");
request.setAttribute("name2", "값2 입니다.");
session.setAttribute("name3", "값3 입니다.");
application.setAttribute("name4", "값4 입니다.");
%>
| 리턴타입 | 메서드명 | 설명 |
|---|---|---|
| void | setAttribute(String name, Object value) | - 해당 영역에 입력한 name을 속성명으로, value를 값으로 속성을 저장합니다. - value(값)의 경우 Object 타입으로 저장되기 때문에 어떤 타입도 저장할 수 있습니다.(단 실제 사용시 캐스팅 필요) |
| Object | getAttribute(String name) | - 해당 영역의 속성 중 name을 속성명으로 갖는 속성의 값을 가져옵니다. - 리턴 값이 Object 이므로 실제 사용 시 캐스팅이 필요합니다. |
| void | removeAttribute(String name) | - 해당 영역의 속성 중 name을 속성명으로 갖는 속성을 삭제합니다. - 입력한 속성명이 존재하지 않을 시에도 에러가 발생하지는 않습니다. |
성낙현의 JSP 자바 웹 프로그래밍 2판 - 성낙현 지음
위 책을 공부하며 작성하고 있습니다!