본문 바로가기
자바과정/JSP

JSP 예습겸 Scope

by Parkej 2021. 3. 8.

자바 빈즈란 ? : show400035.tistory.com/83?category=975925

Scope 출처 : victorydntmd.tistory.com/m/155

 

나중에 Scope 예제를 통한 객체의 범위 감 익히기 : m.blog.naver.com/PostView.nhn?blogId=javaking75&logNo=140181686711&proxyReferer=&proxyReferer=https:%2F%2Fwww.google.co.kr%2F

 

 

- 객체 범위의 종류

 

  • scope 속성
    scope 속성값으로 page, request, session 그리고 application 중 하나를 지정할 수 있다 이 속성이 생략되면 기본값으로 page가 적용됩니다.
    - page : 하나의 JSP 페이지에서만 사용
    - request : 요청이 처리되는 동안 forward, include 된 페이지 간에 사용
    - session : 클라이언트 단위로 사용
    - application : 웹 애플리케이션 단위로 사용

알아본바로는 Beans의 scope 속성에 관한 내용인거 같은데 각 객체에는 범위가 존재한다고 한다. 알아보자


1. 객체 범위 종류

웹 애플리케이션에는 4개의 객체 범위가 존재합니다.

  1. page 영역
    • 한 번의 클라이언트 요청이 오면, 하나의 JSP 페이지가 응답됩니다.
    • page 영역은 이 때 하나의 JSP 페이지 내에서만 객체를 공유하는 영역을 의미합니다. ( JSP only )
      • JSP 파일에는 pageContext가 내장되어 있으며, 이 객체는 page 영역에서만 유효합니다.
      • JSP 파일에 <% %> 안에 변수를 사용하면 이 변수는 해당 JSP 파일 내에서만 유효한데, page 스코프에 정의된 객체이기 때문입니다.
  2. request 영역
    • 요청을 받아서 응답하기까지 객체가 유효한 영역입니다.
    • Servlet에서 forward 또는 include를 사용하면, request 요청 객체가 공유되어서 request 영역이 됩니다.
    • 지금까지 Servlet에서 JSP로 객체를 보낼 때 사용했던 방법입니다.
      • Servlet에서는 reqeust.setAttribute("이름", 객체);  로 전달하였고,
      • JSP에서는 Obejct ob j =  request.getAttribute("이름"); 으로 받았습니다.
      • 이 때 사용했던 request 객체가 request 영역입니다.
  3. session 영역
    • 하나의 브라우저 당 1개의 session 객체가 생성됩니다.
    • 즉, 같은 브라우저 내에서 요청되는 페이지들은 같은 객체를 공유하게 되는데, 이를 세션 영역이라고 합니다.
    • 세션이 종료되면 객체는 반환됩니다.
    • requset.getSession() 메서드를 호출하여 세션 영역의 객체를 얻을 수 있습니다.
  4. application 영역
    • 하나의 애플리케이션 당 1개의 application 객체가 생성됩니다.
    • 즉, 같은 애플리케이션 내에서 요청되는 페이지들은 같은 객체를 공유하게 되는데 이를 애플리케이션 영역이라고 합니다.
    • 애플리케이션이 종료되면 객체는 반환됩니다.
    • request.getServletContext() 메서드를 호출하여, 애플리케이션 영역의 객체를 얻을 수 있습니다.

이로 미루어 보아 scope 범위는 page < request < session < application 순이라는 것을 알 수 있습니다. 

 

* 간단요약(상황에 맞게 쓸 수 있도록)

1. page : 하나의 JSP 페이지 내에서만 객체를 공유하는 영역을 의미한다.

2. request : 요청을 받아서 응답하기까지 객체 유효한 영역임

 - Servlet에서 forward 또는 include를 사용하면, request 요청 객체가 공유되어서 request 영역이 된다.

3. session : 하나의 브라우저 당 1개의 session 객체가 생성된다. 즉, 같은 브라우저 내에서 요청되는 페이지들은 같은 객체를 공유하게 되는데 이를 세션 영역이라고 함. (세션이 종료되면 객체는 반환된다.)

4. application : 하나의 애플리케이션 당 1개의 application 객체가 생성됨. 즉, 같은 애플리케이션 내에서 요청되는 페이지들은 같은 객체를 공유하게 되는데 이를 애플리케이션 영역이라고 함. (getServletContext() 메서드 호출)

 

반응형

댓글