1. scope
변수를 어떤 범위 내에서 사용할지를 정하는 기준
2. 객체 사용 범위 종류
1) Page
- 페이지 내에서 지역변수처럼 사용
2) Request
- http 요청을 WAS가 받아서 웹 브라우저에게 응답할 때까지 변수가 유지되는 경우 사용
3) Session
- 웹 브라우저 별로 변수가 관리되는 경우 사용 (생성되고, 지워지기 전까지)
4) Application
- 웹 어플리케이션이 시작되고 종료될 때까지 변수가 유지되는 경우 사용
3. JSP 에서 객체 찾는 순서
page -> request -> session -> application
4. 4가지 scope (page, request, session, application)
1) Page Scope
- JSP 안에서 생성하고 사용되는 범위를 말한다. (스프링 사용 시 고려하지 않아도 됨)
- JSP 페이지 내에서 pageContext
라는 내장 객체로 사용 가능하다.
- forward 가 될 경우 해당 page scope에 지정된 변수는 사용할 수 없다.
- 사용방법
- application scope나 session scope, request scope 와 동일하다.
- setAttribute, getAttribute 를 사용한다.
- jsp 에서 pageScope에 값을 저장한 후, 해당 값을 EL 표기법, JSTL에서 사용할 때 사용된다.
2) Request Scope
- 모델 객체를 전달하기 위한 기본 범위를 말한다.
- 응답이 요청하고 웹 브라우저에게 응답할 때 까지만 객체가 유지되게 된다.
- Model
, ModelAndView
, @ModelAttribute
, HttpServletRequest
객체를 사용한다.
- forward시 값을 유지하고자 사용된다.
- 사용방법
- 값을 저장할 때, request 객체의 setAttribute() 메소드 사용
- 값을 읽어 들일 때, request 객체의 getAttribute() 메소드 사용
3) Session Scope
- 웹 브라우저간의 탭 간에는 세션정보가 공유되기 때문에, 각각의 탭에서는 같은 세션 정보를 사용할 수 있다.
- 따라서, 동일한 데이터가 해당 브라우저에서도 해당 데이터를 유지하고 싶을 때 사용된다.
- ex) 장바구니, 로그인 등
- session 의 지속시간이 만료되거나, 브라우저 종료 시 해당 섹션은 삭제된다.
- HttpSession
인터페이스를 구현한 객체로 사용한다.
- 사용방법
- 값을 저장할 때, session 객체의 setAttribute() 메소드 사용
- 값을 읽어 들일 때, session 객체의 getAttribute() 메소드 사용
4) Application Scope
- 웹 어플리케이션이 시작되고 종료될 때까지 데이터를 사용할 수 있다.
- 웹 어플리케이션 하나당 하나의 application 객체가 사용된다.
- 프로그램이 실행되고 있는 동안 계속 객체가 유지하게 된다.
- 모든 클라이언트가 공통으로 사용해야 할 값들이 있을 때 사용된다. (클라이언트가 바뀌어도 누적된다.)
- ServletContext
인터페이스를 구현한 객체를 사용한다.
- JSP 에서는 application 내장 객체를 이용한다.
- 서블릿에서는 getServletContext() 메소드를 사용하여 application 객체를 이용한다.
- 사용방법
- 값을 저장할 때, application 객체의 setAttribute() 메소드 사용
- 값을 읽어 들일 때, application 객체의 getAttribute() 메소드 사용