본문 바로가기
boostcource/boostcourse_web programming

Application scope

by sgyeong 2024. 4. 19.

Application scope

 

- 웹 어플리케이션이 시작되고 종료될 때까지 변수를 사용할 수 있다.
- ServletContext 인터페이스를 구현한 객체를 사용한다.
- jsp에서는 application 내장 객체를 이용한다.
- 서블릿의 경우는 getServletContext() 메소드를 이용하여 application 객체를 이용한다.
- 웹 어플리케이션 하나당 하나의 application 객체가 사용된다.
- 값을 저장할 때는 application 객체의 setAttribute() 메소드를 사용한다.
- 값을 읽어들일 때는 application 객체의 getAttribute() 메소드를 사용한다.
- 모든 클라이언트가 공통으로 사용해야 할 값들이 있을 때 사용한다.

 

 

서버에는 웹 어플리케이션이 여러 개 있을 수 있다. 프로젝트 하나가 하나의 웹 어플리케이션이다. application scope은 어플리케이션 내의 객체이다. 하나의 웹 어플리케이션 내에서 사용할 수 있는 scope이다. 어떤 클라이언트가 어플리케이션에 접근한다 하더라도 하나의 application scope를 사용하기 때문에 모든 클라이언트가 공통으로 사용해야 할 값들이 있을 때 사용한다. 

 

 

 

 

실습

 

firstweb 프로젝트에 ApplicationScope01, ApplicationScope02 Servlet을 각각 만들어준다.

 

 

url로 값을 요청할 것이기 때문에 doGet메서드만 체크하고 Finish한다.

 

 

 

ApplicationScope01 servlet

 

application scope은 servletContext 객체를 이용해 얻어낼 수 있다. servletContext는 getServletContext() 메서드를 통해 얻어낼 수 있다. servletContext  객체는 실제 웹 애플리케이션 영역이다. 변수명을 application으로 해서 ServletContext 객체를 만들어줬다. 

어떤 scope이든 값을 맡길때는 setAttribute(), 값을 얻어올 때는 getAttribute() 메서드를 사용한다. 

맡길때 앞에는 맡길 이름, 뒤에는 맡길 값을 넣어준다. 

 

 

 

 

ApplicationScope02 servlet

 

ApplicationScope으로부터 값을 얻어오기 위해 getAttribute 해준다.

맡길때 object로 들어가기 때문에 형변환하는 작업을 해준다. 형변환해서 value값을 얻어오고, 얻어온 값에 +1한 값을 넘겨준다. 그리고 다시 증가시킨 값을 넘겨준다음 출력해준다. 

여기서 만약 applicationScope01보다 applicationScope02가 먼저 실행되었을때 값이 없기 때문에 null값을 출력하게 된다. 그렇기 때문에 exception 처리를 해준다. NullPointerException이 발생하면 메시지가 출력되도록 해준다.

 

 

 

applicationScope01.jsp

 

 

 

 

 

 

맨 처음 applicationScope01.jsp 먼저 실행한 결과

 

 

 

ApplicationScope01 servlet 실행 결과

 

ApplicationScope02 servlet 실행 결과

 

applicationScope01.jsp 다시 실행한 결과

 

 

 

 

 

 

 

 

 

참고 : boostcourse    https://www.boostcourse.org/web316/lecture/254286/?isDesc=false

 

웹 프로그래밍(풀스택)

부스트코스 무료 강의

www.boostcourse.org

https://www.boostcourse.org/web316/lecture/254287/?isDesc=false

 

웹 프로그래밍(풀스택)

부스트코스 무료 강의

www.boostcourse.org

 

'boostcource > boostcourse_web programming' 카테고리의 다른 글

EL (Expression Language) -2  (0) 2024.04.20
EL (Expression Language)  (1) 2024.04.20
Session scope  (0) 2024.04.19
Request scope  (0) 2024.04.19
Page scope  (0) 2024.04.19