Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Callback
- Service
- 부스터2기
- 알고리즘
- 서블릿
- Spring
- response
- DP
- Spring Framework
- 웹
- servlet
- 기술면접
- IOC
- DI
- JSP
- 코딩테스트
- 다이나믹프로그래밍
- 자바스크립트
- controller
- 파이썬
- Spring MVC
- 백준
- Promise
- 면접
- 네이버
- 다이나믹 프로그래밍
- 부스트코스
- was
- request
- 비동기
Archives
- Today
- Total
Sh개발일기
스코프(Scope) 본문
학습 목표
- 4가지 scope에 대해서 이해한다.
- page scope를 이해하고 사용할 수 있다.
- request scope를 이해하고 사용할 수 있다.
- session scope를 이해하고 사용할 수 있다.
- application scope를 이해하고 사용할 수 있다.
핵심 개념
- application scope
- session scope
- request scope
- page scope
- PageContext
- HttpServletRequest
- forward
- request.setAttribute()
- request.getAttribute()
- HttpSession
- ServletContext
Scope란?
변수와 객체의 유효성과 관련이 있는 범위의 개념이다. 스코프에는 application scope, session scope, request scope, page scope의 4가지 종류가 있다.
- Application : 웹 어플리케이션이 시작되고 종료될 때 까지 변수가 유효한 경우 사용
- Session : 웹 브라우저 별로 변수가 관리되는 경우 사용(Session객체의 생성~소멸)
- Request : http요청을 WAS가 받아서 웹 브라우저에게 응답할 때까지 변수가 유지되는 경우 사용 (forward시 유지)
- Page : Servlet, JSP 등 한 페이지 내에서 지역변수처럼 사용
Page Scope
특정 서블릿이나 JSP가 실행되는 동안에만 정보를 유지할 경우 사용한다.
- PageContext 추상클래스를 사용한다
- JSP에서 pageContext라는 내장 객체로 사용이 가능하다.
- forward될 경우 해당 Page scope에 저장된 변수는 사용할 수 없다.
- Application, Session, Request scope와 사용법이 같다.(setAttribute, getAttribute 등 이용)
- 지역변수처럼 사용된다는 것이 다른 scope들과 다르다.
- JSP에서 pageScope에 값을 저장한 후 해당 값을 EL표기법, JSTL 등에서 사용할 때 사용된다.
- 지역변수처럼 해당 JSP나 서블릿이 실행되는 동안에만 정보를 유지하고자 할 때 사용된다.
Request Scope
WAS가 브라우저로부터 요청을 받은 후, 포워드 되는 동안 유지하고 싶은 정보가 있을 경우 사용한다. (요청을 받은 후 부터 응답을 내보낼 때 까지)
- http 요청을 WAS가 받아서 웹 브라우저에게 응답할 때 까지 변수값을 유지하고자 할 경우 사용한다.
- HttpServletRequest 객체를 사용한다.
- JSP에서는 request 내장 변수를 사용한다.
- 서블릿에서는 HttpServletRequest 객체를 사용한다.
- Application, Session, Page Scope와 사용법이 동일하다.(setAttribute, getAttribute 등 사용)
- forward 시 값을 유지하고자 사용한다.
- 앞에서 forward를 실습할 때 사용했던 request객체의 사용법이 request scope를 이용한 예시이다.
Session Scope
Session이란 Server에서 접속하는 Client(브라우저)마다 하나의 객체를 만들어서 관리하기 위해 사용하는 객체이다. 상태정보유지를 배울 때 더 자세하게 알아볼 개념이기도 하다.
Session Scope는 접속한 웹 브라우저별로 정보를 관리 하고 싶을 때 사용하는 스코프이다.
- 웹 브라우저별로 변수를 관리하고자 할 경우 사용한다.
- 웹 브라우저간의 탭 간에는 세션정보가 공유되기 때문에, 각각의 탭에서는 같은 세션정보를 사용할 수 있다.
- HttpSession 인터페이스를 구현한 객체를 사용한다.
- JSP에서는 session 내장 변수를 사용한다.
- 서블릿에서는 HttpServletRequest의 getSession()메소드를 이용하여 객체를 얻는다.
- 다른 scope와 사용법이 동일하다.(setAttribute, getAttribute 등 사용)
- 장바구니처럼 사용자별로 유지가 되어야 할 정보가 있을 때 사용한다.
Application Scope
하나의 웹 어플리케이션에서 공유하고 싶은 변수가 있을 때 사용한다. 하나의 웹 어플리케이션이란 우리가 이클립스에서 만드는 다이나믹 웹 프로젝트 같은 하나의 프로젝트 단위로 생각할 수 있다. 이러한 Application을 사용하는 모든 Client가 해당 정보를 공유할 수 있다.
- 웹 어플리케이션이 시작되고 종료될 때까지 변수를 사용할 수 있다.
- ServletContext 인터페이스를 구현한 객체를 사용한다.
- JSP에서는 application 내장 객체를 이용한다.
- 서블릿의 경우 getServletContext()메소드를 이용하여 객체를 얻는다.
- 웹 어플리케이션 하나당 하나의 application객체가 사용된다.
- 다른 scope와 사용법이 같다.(setAttribute, getAttribute 등 사용)
- 모든 클라이언트가 공통으로 사용해야 할 값들이 있을 때 사용한다.
스코프는 범위의 개념으로, 각각의 변수나 객체를 어디까지 공유할지에 대한 개념으로 표현되며 4가지 특징에 따라 알맞은 객체의 사용으로 이루어질 수 있다. 이러한 스코프 객체들의 특징과 생성, 소멸시기를 잘 생각하면 스코프를 더 잘 이해할 수 있다.
'BoostCourse' 카테고리의 다른 글
DBMS(DataBase Management System) (0) | 2020.02.21 |
---|---|
EL(Expression Language) (0) | 2020.02.21 |
리다이렉트와 포워드 (Redirect & forward) (0) | 2020.02.18 |
JSP 내장객체 (0) | 2020.02.17 |
JSP 문법 (0) | 2020.02.17 |