코딩하는 바나나
[BackEnd] Scope 본문
Scope
웹 개발을 하다보면 어떤 데이터를 잠깐 만 저장할 때도 있지만 때에 따라서 웹 어플리케이션이 실행되는 내내 계속 데이터를 가지고 있어야 할 때도 있을 것이다. 이렇게 변수의 범위를 딱 정해서 사용 하도록 해주는 것이 Scope이다.
웹 개발에서의 Scope는 4가지가 있다.
Application scope
Session scope
Request scope
Page scope
출처 https://www.boostcourse.org/web316/lecture/16708?isDesc=false
웹 프로그래밍(풀스택)
부스트코스 무료 강의
www.boostcourse.org
위 처럼 각 scope별로 범위가 나눠져 있다.
page는 서블릿 마다 가지는 영역이다. 따라서 포워드 될 경우 page scope의 변수들은 사용 할 수 없다.
request는 하나의 request가 들어와서 response로 나갈 때 까지의 영역이다. 만약 어떤 서블릿에서 포워드로 통해서 다른 서블릿이나 jsp파일로 request를 넘길경우 포워드 받은 서블릿이나 jsp파일에서 request객체를 그대로 사용 할 수 있다. request객체가 request scope이기 때문이다.
session은 session객체가 만들어져서 사라질 때 까지이다. 그래서 여러개의 요청이 와도 session scope안의 변수들은 계속 접근이 가능하다. 보통 상태유지를 할때 사용한다. 세션은 하나의 클라이언트마다 하나씩 생성 된다.
application scope는 application이 생성돼서 소멸될때 까지 유지되는 scope이다. 웹 어플리케이션당 하나만 생성된다. 따라서 모든 클라이언트가 공유한다.
사용법
모든 scope들은 해당 scope에 해당하는 객체들이 만들어져 있다. 우리는 그 객체들에 구현되어있는 setAttribute, getAttribute함수를 이용하여 변수를 저장하고 사용하면 된다.
page scope
서블릿에서는 PageContext라는 추상 클래스를 사용한다. 해당 클래스의 setAttrubute, getAttribute를 사용하면 된다. jsp에서는 해당 클래스가 pageContext로 생성이 되기 때문에 pageContext객체를 사용하면 된다.
request scope
서블릿에서는 HttpServletReqeust객체를 사용한다. 보통 doGet과 같은 함수들을 오버라이딩하면 자동으로 매개변수로 받게 된다. jsp에서는 request로 내장변수가 선언이 되어있다.
session scope
서블릿에서는 HttpSession객체를 이용한다(해당 인터페이스를 구현한 객체이다). HttpServletRequest의 getSession()함수를 이용해 객체를 받아와서 사용한다. jsp에서는 session내장변수를 이용한다.
application scope
ServletContext인터페이스를 구현한 객체를 사용한다. getServletContext()함수를 이용해서 객체를 받아올 수 있다. jsp에서는 application이라는 내장객체를 사용한다.
'Web' 카테고리의 다른 글
[BackEnd] JDBC (0) | 2022.03.27 |
---|---|
[BackEnd] DB, DBMS (0) | 2022.03.27 |
[BackEnd] redirect, foward, servlet jsp연동 (0) | 2022.03.09 |
[BackEnd] Servlet 과 JSP (0) | 2022.02.28 |
[BackEnd] WAS (0) | 2022.02.28 |