- Scope이란 무엇인가?
=> 웹 프로그래밍을 하다 보면 약속된 객체들이 어느 범위 까지 유지가 되는지 정할 필요가 있다.
- 4가지 scope
1) Application : 웹 어플리케이션이 시작되고 종료될 때까지 변수가 유지되는 경우 사용
2) Session : 웹 브라우저 별로 변수가 관리되는 경우 사용 (세션 객체가 생성되어 소멸될 때까지 -> 여러개의 요청이 들어와도 남아 있다.)
3) Request : http요청을 WAS가 받아서 웹 브라우저에게 응답할 때까지 변수가 유지되는 경우 사용
-> 하나의 요청이 들어와서 응답이 나갈때 까지 유지된다.
4) Page Scope: 페이지 내에서만 지역변수처럼 사용하고 유지된다.
1. Page Scope
- PageContext 추상 클래스를 사용한다. => JSP 내에서 pageContext라는 내장 객체로 사용 가능하다.
- 다른 페이지로 forward(다음 페이지로 수행을 넘긴다)될 경우 Page Scope에서 지정된 변수는 사용 불가능하다.
- 지역변수처럼 사용되는 것이 다른 Scope와는 다르다. => 다른 페이지로 넘어가면 메모리에서 사라지고 새로 생김.
- pageScope에 값을 저장하고, 해당 값을 EL 표기법 등에 의해서 축약해서 사용할때 주로 쓴다. 해당 jsp나 서블릿이 실행되는 동안에만 정보를 유지하고자 할 때 사용.
2. Request Scope
- http 요청을 WAS가 받아서 웹 브라우저에게 응답할 때 까지 변수값을 유지하고자 할 때 사용한다.
=> http 요청이 들어왔을 때 서블릿이 이를 받아서 수행하고, 이를 통해 도출된 값을 다른 서블릿이나 jsp로 forward할 때 등에서 사용됨.
- 실행한 다음 응답이 나가면 해당 request/response 객체는 없어진다.
- JSP에서는 request 내장 변수 사용한다.
=> 값을 저장할 때는 setAttribute(), 값을 읽어들일 때에는 getAttribute() 메소드를 사용한다.
-forward 시 값을 유지하고자 할 때 사용한다.
3. Session Scope
- 웹 브라우저 별로 변수를 관리하고자 할 때 사용한다.
=> 각 클라이언트 (서버는 하나) 마다 하나의 객체를 만들어서 관리하는 게 세션 객체 이다. ( 상태 정보를 유지하기 위함)
- 웹 브라우저의 탭 간에는 세션 정보가 공유되기 때문에, 각각 의 탭에서는 같은 세션정보를 사용할 수 있다.
- JSP에서는 session 내장 변수를 사용한다. ( ex) 값 저장- session.setAttribute(), 값 읽어들임- session.getAttribute()..)
- 서블릿에서는 HttpServletRequest의 getSession() 메소드를 사용하여 session객체를 얻는다.
- 장바구니 처럼 사용자 별로 유지가 되어야 할 정보가 있을 때 사용한다.
=> 응답을 주고받을 때 request 객체는 사라지지만, session은 일정한 시간 정도를 정해주면 그 시간동안 유지된다.
4. Application Scope
- 웹 어플리케이션이 시작되고 종료될 때 까지 변수를 사용할 수 있다.
=> 서버에서는 여러개의 웹 어플리케이션이 존재.
ex) shop/index, shop/mypage, shop/order.. 등등은 모두 shop이라는 웹 어플리케이션 안에 존재한다.
- 어플리케이션당 딱 하나만 만들어지기 때문에 모든 클라이언트가 공통적으로 사용해야 할 값이 있을 때 사용한다.
- jsp에서는 application 내장 객체를 이용한다.
-servlet에서는 getServletContext() 메소드를 이용하여 application 객체를 이용한다.
- 웹 어플리케이션 하나당 하나의 application 객체가 사용된다.
'Web > Java (Spring+JSP)' 카테고리의 다른 글
Spring 핵심 원리 #3- 새로운 할인 정책/AppConfig 적용 (0) | 2021.11.12 |
---|---|
Spring 핵심 원리 #2- 주문/할인 도메인 개발 (0) | 2021.11.10 |
Spring 핵심 원리 #1- 회원 도메인 설계/개발/테스트 (0) | 2021.10.31 |
객체지향 설계의 5원칙 (0) | 2021.06.16 |
객체지향이란? (0) | 2021.06.16 |