스코프(scope)-Page, Request, Session, Application

이재민·2023년 8월 23일
4

웹 기본지식

목록 보기
5/5

Scope란?

변수를 어떤 범위 내에서 사용할지를 정하는 기준
(변수에 접근할 수 있는 범위)


위 그림은 Scope의 범위를 명시적으로 보여 주고있다.

Scope 4가지

간단 설명

  • application
    웹 어플리케이션이 시작되고 종료될 때까지 변수가 유지되는 경우 사용 (공통저장소 , 전체 1개만 존재)
  • session
    웹 브라우저 별로 변수가 관리되는 경우 사용(생성되고, 지워지기 전까지)
    개별저장소, 최소한의 data : 메모리 부담
  • request
    http요청을 WAS가 받아서 웹 브라우저에게 응답할 때까지 변수가 유지되는 경우 사용
    (요청할때 마다 생성, 요청을 하면 jsp가 응답)
  • pageContext
    jsp 파일내에서만 사용가능, 페이지 내에서 지역변수처럼 사용

Application

웹 어플리케이션이 시작되고 종료될 때까지 변수를 사용할 수 있다.
•jsp에서는 application 내장 객체를 이용한다.
•서블릿의 경우는 getServletContext()메소드를 이용하여 application객체를 이용한다.
•웹 어플리케이션 하나당 하나의 application객체가 사용된다.
(프로그램이 실행되고있는(서버에서)동안 계속 객체가 유지된다.)
값을 저장할 때는 application객체의 setAttribute()메소드를 사용한다.
값을 읽어 들일 때는 application객체의 getAttribute()메소드를 사용한다.
모든 클라이언트가 공통으로 사용해야 할 값들이 있을 때 사용한다.
(클라이언트가 바뀌어도 누적된다)


Session

웹 브라우저(클라이언트)별로 변수를 관리하고자 할 경우 사용한다.(session 지속시간만료, 브라우저 종료시 사라짐)
•웹 브라우저간의 탭 간에는 세션정보가 공유되기 때문에, 각각의 탭에서는 같은 세션정보를 사용할 수 있다.
•HttpSession 인터페이스를 구현한 객체를 사용한다.
JSP에서는 session 내장 객체를 사용한다.
•서블릿에서는 HttpServletRequest의 getSession()메소드를 이용하여 session 객체를 얻는다.
(request.getSession())
•값을 저장할 때는 session 객체의 setAttribute()메소드를 사용한다. (session.setAttribute())
•값을 읽어 들일 때는 session 객체의 getAttribute()메소드를 사용한다. (session.getAttribute())
•로그인 여부처럼 사용자별로 유지가 되어야 할 정보가 있을 때 사용한다.


Request

http 요청을 WAS(서버)가 받아서 웹 브라우저에게 응답할 때까지 변수값을 유지하고자 할 경우 사용한다.
•HttpServletRequest 객체를 사용한다.
•JSP에서는 request 내장 객체를 사용한다.
•서블릿에서는 HttpServletRequest 객체를 사용한다.
•값을 저장할 때는 request 객체의 setAttribute()메소드를 사용한다.
•값을 읽어 들일 때는 request 객체의 getAttribute()메소드를 사용한다.
forward 시 값을 유지하고자 사용한다.


Page

•PageContext 추상 클래스를 사용
•JSP 페이지에서 pageContext라는 내장 객체로 사용
가능
•forward가 될 경우 해당 Page scope에 지정된 변수는 사용할 수 없다.
•사용방법은 Application scope나 Session scope, request scope와 같다.(setAttribute, getAttribute)
•마치 지역변수처럼 사용된다는 것이 다른 Scope들과 다릅니다.(해당 jsp나 서블릿을 사용할 때만 사용)
•jsp에서 pageScope에 값을 저장한 후 해당 값을 EL표기법, JSTL에서 사용할 때 사용됩니다.


profile
안녕하세요

2개의 댓글

comment-user-thumbnail
2023년 8월 23일

좋은 글 감사합니다 ! 퍼가요

1개의 답글