Scope란?
'scope = (주제조직활동 등이 다루는)범위' 라고 네이버 어학사전에 설명 되어있다.
JSP에서 scope란 "프로그램상 사용되는 변수들은 사용 가능한 범위를 가지는데, 이 때 변수의 범위를 Scope(스코프)한다."이다.
웹 서버에서 객체 또는 변수가 생성된 후 유효 할 수 있는 범위에 대해 말하고 있다.
JSP에서 4가지 Scope
- Page Scope: 페이지 내에서 지역변수 처럼 사용 가능.
- Request Scope: http요청을 WAS가 받아서 웹 브라우저에게 응답할 때까지 변수가 유지되는 경우 사용.
- Session Scope: 웹 브라우저 별로 변수가 관리되는 경우 사용.
- Application Scope: 웹 어플리케이션이 시작되고 종료될 때 까지 변수가 유지되는 경우 사용 - (모든 클라이언트에게 공통적으로 무언가 보여줄 떼 사용)
Page Scope
- PageContext 추상클래스를 사용한다.
- JSP 페이지에서 PageContext라는 내장 객체로 사용가능하다.
- forward 를 사용한 경우 해당 Page Scope에 지정된 변수는 사용할 수 없다.
- 사용법은 다른 Scope와 같지만, 마치 지역변수처럼 사용되는 것이 다른 Scope들과 다르다.
- page내에서만 사용될 수 있는 변수이기 때문에 지역변수처럼 해당 JSP나 Servlet 실행되는 동안에만 정보를 유지하고자 할 때 사용된다.
- JSP에서 page Scope에 값을 저장한 후 해당 값을 LE표기법 등에서 사용할 때 사용이 가능하다.
Request Scope
- http 요청을 WAS가 받아 웹 브라우저에 응답할 때 까지 변수 값을 유지하고자 할 경우 사용한다.
- httpServletRequest 객체를 사용한다.
- JSP에서는 request내장 변수를 사용하고, Servlet에서는 HttpServletRequest객체를 사용한다.
- 값을 저장할 때는 request객체의 setAttribute()메소드를 사용한다.
- 값을 읽어올 때는 request객체의 getAttribute()메소드를 사용한다.
- foward시 값을 유지하고자 사용한다.
- 가장 안정적이기 때문에 가장 많이 쓰임
Session Scope
- 웹 브라우저별로 변수를 관리하고자 할 경우 사용
- 웹 브라우저 탭 간에는 세션정보가 공유되기 때문에, 각각의 탭에서 같은 세션정보를 사용할 수 있다.
- HttpSession 인터페이스를 구현한 객체를 사용한다.
- JSP에서는 session내장 변수를 사용한다.
- Servlet에서는 HttpServletRequest의 getSession()메소드를 이용하여 session객체를 얻는다.
- 값을 저장할 때는 session객체의 setAttribute()메소드를 사용한다.
- 값을 읽어올 때는 session 객체의 getAtrribute()메소드를 사용한다.
- 예를 들어, 장바구니, 구매목록, 결제내역, 로그인, 회원가입 등과 같이 개별 클라이언트의 정보를 유지할 필요가 있을때 사용.
- RequestScope만큼 많이 쓰임
ApplicationScope
- 웹 어플리케이션이 시작되고 종료될 때까지 변수를 사용할 수 있다.
- ServletContext 인터페이스를 구현한 객체를 사용한다.
- jsp에서는 application내장 객체를 이용한다.
- Servlet에서는 getServletContext()메소드를 이용하여 application객체를 이용한다.
- 웹 어플리케이션 하나당 하나의 application객체를 이용한다.
- 값을 저장할 때는 application 객체의 setAttribute()메소드를 사용한다.
- 값을 읽어올 때는 application 객체의 getAttribute()메소드를 사용한다.
- 모든 클라이언트가 공통으로 사용해야 할 값들이 있을 때 사용.
- 값이 모두 공유 되기 때문에 자주 사용되지는 않다.
공통 함수
- setAttribute(string key, object value): key와 value 형식으로 값을 할당한다.
- getAttribute(string key) : key값으로 value값을 리턴 받는다.
참고 사이트:
https://doitnow-man.tistory.com/entry/JSP-4-jsp의-scope-정리