csmoon1010의 SW 블로그

JSP의 Scope - (부스트코스) 본문

웹/백엔드

JSP의 Scope - (부스트코스)

csmoon1010 2021. 3. 30. 09:26

1. Scope의 의미, 개요

사용 목적에 따라 지정하는 변수의 범위

  • Application : 웹 어플리케이션이 시작되고 종료될 때까지 변수가 유지되는 경우 사용
  • Session : 웹 브라우저 별로 변수가 관리되는 경우 사용 (상태 유지 시에 사용)
  • Request : http요청을 WAS가 받아서 웹 브라우저에게 응답할 때까지 변수가 유지되는 경우 사용
  • Page : 페이지 내에서 지역변수처럼 사용 (동일 페이지 내에서만)

 

2. Page Scope

  • JSP 페이지에서 pageContext라는 내장 객체로 사용
  • forward :  해당 Page scope에 지정된 변수는 사용할 수 없음
  • 공통점 : 사용방법은 Application scope나 Session scope, request scope와 같음
    • setAttribute, getAttribute 메소드 이용
  • 차이점 : 마치 지역변수처럼 사용 (같은 Page 내에서만 사용할 수 있으므로)
  • 사용 목적 : jsp에서 pageScope에 값을 저장한 후 해당 값을 EL표기법, JSTL 등에서 사용할 때
    • ${pageScope.msg}

지역 변수처럼 해당 jsp나 서블릿이 실행되는 동안에만 정보를 유지하고자 할 때 사용됩니다.

 

 

3. Request Scope

  • HttpServletRequest 객체를 사용한다.
    • JSP :  request 내장 변수
    • 서블릿 : HttpServletRequest 객체
  • 값을 저장 :  request 객체의 setAttribute()메소드
  • 값을 읽기 :  request 객체의 getAttribute()메소드
  • 사용목적 : forward 시 값을 유지하고자 사용
    • redirect 시에는 불가 : 클라이언트에서 새로운 요청 생성

요청~응답까지 : http 요청을 WAS가 받아서 웹 브라우저에게 응답할 때까지 변수값을 유지하고자 할 경우 사용

 

 

 

4. Session Scope

  • 웹 브라우저간의 탭 : 세션정보가 공유 → 각각의 탭에서 같은 세션정보를 사용
  • HttpSession 인터페이스를 구현한 객체를 사용한다.
    • JSP : session 내장 변수를 사용한다.
    • 서블릿 : HttpServletRequest의 getSession()메소드 → session 객체 획득
  • 값을 저장 : session 객체의 setAttribute()메소드
  • 값을 읽기 : session 객체의 getAttribute()메소드
  • 사용목적 : 사용자별로 유지가 되어야 할 정보가 있을 때 (장바구니, 로그인 등)

웹 브라우저별로 변수를 관리하고자 할 경우 사용!!

 

 

 

5. Application Scope

  • 웹 어플리케이션 하나당 하나의 application 객체 (서버에는 여러 웹 어플리케이션有)
  • ServletContext 인터페이스를 구현한 객체를 사용한다.
    • jsp : application 내장 객체
    • 서블릿 : getServletContext()메소드 → application객체를 획득
  • 값을 저장 : application객체의 setAttribute()메소드
  • 값을 읽기 : application객체의 getAttribute()메소드
  • 사용목적 : 모든 클라이언트가 공통으로 사용해야 할 값들이 있을 때

웹 어플리케이션이 시작되고 종료될 때까지 변수의 사용이 필요할 경우!

Comments