우리는 지금까지 request,response, out 등의 기본객체를 사용해봤습니다.
이 외에도 몇가지 기본객체를 사용해보고
이 기본객체가 jsp실행 도중 어디서부터 어디까지 영향을 미치는지에 대한
영역에 대한 내용을 다루도록 하겠습니다.
PageContext
pageContext 객체는 JSP페이지와 일대일 로 연결된 객체로 다음의 기능을 제공한다.
- 기본 객체 구하기
- 속성처리하기
- 페이지의 흐름 제어(forward,include)
페이지의 흐름제어는 나중에 pageModule부분에서 다룬다.
Application
웹 애플리케이션에 1개씩 있는 기본 객체이다.
localhost:8080 까지는 서버를 가리킨다.
localhost:8080/study 가 하나의 웹 애플리케이션이다.
위 그림에서 서버는 2개의 웹 애플리케이션이 있고
이 서버를 실행하면 2개의 application 객체가 생성된다.
즉 우리가 사용하는 study프로젝트에서는 어떤 jsp에서든 application 객체를 공유한다.
(보통 서버관련 설정파일은 web.xml이라고 하는데 이는 정확히 서버에
등록된 웹 애플리케이션 설정파일이다.
어쨋든 web.xml을 서버관련 설정파일이라고하든, 웹 애플리케이션이라고 하든
보통 우리는 하나의 프로젝트를 가지고 개발하기 때문에 큰 혼란은 없다)
기본객체와 영역
pageContext : 하나의 JSP페이지를 처리할 때 사용되는 영역
request : 하나의HTTP요청을 처리할 때 사용되는 영역
session : 하나의 웹 브라우저와 관련된 영역
application 영역 : 하나의 웹 애플리케이션과 관련된 영역
실제로 많이 사용되는 request,session만 살펴보자
위 그림에서 웹 애플리케이션에 브라우저가 요청을 한다고 생각해보자.
실제로 naver같은데에는 여러 사용자가 요청을 할 것이다.
웹 애플리케이션 입장에서 이 여러사용자들을 구별하기 위한 객체가 session객체이다.
이 session객체는 사용자(정확하겐 사용자의 브라우저)별로 1개씩 만들어진다.
request는 같은 사용자여도 jsp를 요청할 때마다 생성된다.
기본 객체에 속성 set, get
각 기본객체가 존재하는 동안(영역을 잘 보자) 기본객체의 속성을 사용할 수 있다.
속성은 JSP사이에서 데이터를 주고받기 위한 목적으로 사용된다.
속성 처리 메소드
메소드 | 리턴타입 | 설명 |
setAttribute(String name, Object value) |
void | 이름이 name인 속성의 값을 value로 지정합니다. |
getAttribute(String name) | Object | 이름이 name인 속성의 값을 구합니다. 지정한 이름의 속성이 존재하지 않을 경우 null을 리턴합니다. |
removeAttribute(String name) | void | 이름이 name인 속성을 삭제 합니다. |
getAttributeNames() | java.util Enumeration |
속성의 이름 목록을 구합니다.(pageContext기본 객체는 이 메서드를 제공하지 않는다) |
request도 속성에 데이터를 저장하고 가져올 수 있다.
나중에 jsp forward나 include등의 기능을 사용하면 같은 request 객체를 공유하는
서로다른 파일을 여러개 만들게 된다. 이 서로다른 파일들에서 데이터를 공유하기 위해서는
setAttributre,getAttribute를 이용해야한다.
(하나의 파일에서 setAttribute,getAttribute 할 수는 있지만, 별로 유용하지는 않을 것이다.)