스코프(Scope) : 속성을 공유 할 수 있는 유효범위
Servlet과 JSP에서는 Page, Request, Session, Application의 4가지 Scope이 있다.
① (JSP)Page Scope
-하나의 JSP 페이지 내에서만 객체를 공유하는 영역
-실제 선언된 JSP 페이지 내에서만 사용할 수 있음
-페이지 내에서 지역변수처럼 사용
-PageContext 추상 클래스를 사용
-JSP 페이지에서 pageContext라는 내장 객체(Implicit Object)로 사용 가능
ex)pageContext이름.setAttribute(), pageContext이름.getAttribute() 등의 방법으로 바로 사용
-forward가 될 경우 해당 Page scope에 지정된 변수는 사용할 수 x
==어떤 페이지로 요청이 들어온 뒤, 다른 페이지로 forward 될 경우 이전 page scope 내에 있던 변수는 forward 된 page scope 내에서는 사용할 수 x
*forward : 다른 페이지로 프로그램의 제어를 이동할 때 사용되는 액션 태그
-마치 지역변수처럼 사용된다는 것이 다른 Scope들과 다른 점
-JSP에서 pageScope에 값을 저장한 후 해당 값을 EL 표기법 등에서 사용할 때, 지역 변수처럼 해당 JSP나 Servlet이 실행되는 동안에만 정보를 유지하고자 할 때 사용됨
② Request Scope
-요청을 받아서 응답하기까지 객체가 유효한 영역(하나의 HTTP요청을 처리할 때 사용되는 영역)
-클라이언트로부터 하나의 요청이 들어와서 서버가 일을 수행한 후 응답을 보낼 때까지 계속 사용할 수 있는 scope
-Web container 안에 있는 Servlet에 대한 http 요청을 WAS가 받아서 웹 브라우저에게 응답할 때까지 변수값을 유지하고자 할 경우 사용
*WAS(Web Application Server) : 웹 서버 + 웹 컨테이너, 웹상에서 사용하는 컴포넌트들을 올려놓고 사용하게 되는 서버
-모든 요청이 들어올 때마다, WAS는 request 객체와 response 객체를 만든다. forward 여부 등과 상관없이 하나의 요청이 들어와서 응답이 나갈 때까지 계속 유지됨
-Servlet의 service() 메소드가 끝날 때 Request Scope가 끝난다 (request 객체가 없어짐)
-JSP에서는 request 내장 변수 사용
-Servlet에서는 HttpServletRequest 객체 사용
-값을 저장할 때는 request 객체의 setAttribute() 메소드 사용
값을 읽어 들일 때는 request 객체의 getAttribute() 메소드 사용
-forward시 값을 유지하고자 사용
③ Session Scope
-같은 브라우저 내에서 요청되는 페이지들은 같은 객체를 공유하는 영역(하나의 웹 브라우저와 관련된 영역)
-request는 하나의 요청과 응답이 나갈 때까지이지만, Session scope은 session 객체가 만들어져서 소멸될 때까지이므로 하나가 아닌 여러 개의 요청이 들어와도 계속 남아있음
-웹 브라우저 별로 변수를 관리하고자 할 경우 사용
-Session scope은 하나의 클라이언트마다 객체를 만들어서 관리하는 것
==> session scope은 한 클라이언트 내의 여러 개의 request들을 다 cover함
-웹 브라우저간의 탭 간에는 세션정보(상태정보)가 공유되기 때문에 각각의 탭에서는 같은 session 정보를 사용할 수 있음
-Request scope와 달리, 하나의 session scope 내에서는 하나의 request가 끝나도 해당 session 객체는 계속 유지됨(request보다는 정보를 오래 유지하게됨=상태정보 유지)
-JSP에서는 session 내장 변수 사용
-Servlet에서는 HttpServletRequest의 getSession() 메소드를 이용하여 session 객체 얻음(Request의 메소드를 사용하는 이뉴는 session 객체가 어떤 클라이언트의 요청인지 알아야 하기 때문)
-값을 저장할 때는 session 객체의 setAttribute() 메소드 사용
값을 읽어 들일 때는 session 객체의 getAttribute() 메소드 사용
-쇼핑몰의 장바구니처럼 사용자 별로 유지되어야 할 정보가 있을 때 사용
④ Application Scope
-같은 애플리케이션 내에서 요청되는 페이지들은 같은 객체를 공유하는 영역(하나의 웹 어플리케이션과 관련된 영역)
-하나의 application이 생성되고 소멸될 때까지 계속 유지
-Eclipse에서 하나의 Project가 하나의 Application이라고 생각하면 되고, 하나의 Server에는 여러 개의 Web Application이 존재할 수 있음
-웹 어플리케이션이 시작되고 종료(혹은 다시 시작)될 때까지 변수를 사용할 수 있음
-ServletContext 인터페이스를 구현한 객체를 사용
-JSP에서는 application 내장 객체 이용
-Servlet에서는 getServletContext() 메소드를 이용하여 application 객체 이용
-웹 어플리케이션 하나당 하나의 application 객체가 사용됨
-값을 저장할 때는 application 객체의 setAttribute() 메소드 사용
값을 읽어 들일 때는 application 객체의 getAttribute() 메소드 사용
-모든 클라이언트가 공통으로 사용해야 할 값들이 있을 때 사용
(하나의 application scope는 여러 클라이언트들이 사용할 수 있기 때문)
==>scope 범위
page < request < session < application
'Others > 용어 정리' 카테고리의 다른 글
IT직군에서 많이 쓰이는 SI, SM, SE, PG 등 용어의 의미 (0) | 2020.06.27 |
---|---|
IT 용어 (0) | 2020.02.04 |
쿠키와 세션 (0) | 2019.06.20 |