JSP Scope (Back End)
2020. 4. 4. 03:05ㆍToday I learned/Online Courses
사이트: edwith
강의: [부스트코스] 웹 프로그래밍 챕터 2, DB 연결 웹 앱
학습일: 2020년 3월 28일
5. Scope - BE
Scope란?
- Scope의 정의: 변수를 사용할 수 있는 범위
- JSP Scope의 종류
Page Scope
- PageContext 추상 클래스를 사용하는 Scope
- 특정 페이지에 한정해서 변수값을 유지
- 사용 방법
- JSP의 pageContext 내장객체로 사용
- pageContext.setAttribute( ) 메서드로 값을 저장하고 .getAttribute( ) 메서드로 값을 읽어들임
- 다른 Scope도 값을 저장하고 읽어들이는 메서드는 같음
- 다른 Scope와의 차이점
- Page Scope는 지역 변수처럼 사용됨
- JSP나 Servlet이 실행되는 동안에만 정보를 유지
- 지역변수는 특정 구역에, Page Scope는 특정 페이지에 한정되어 사용되는 점이 유사
- 포워드를 하는 경우 페이지의 범위를 넘어가기 때문에 Page Scope에 지정된 변수를 사용할 수 없음
- Page Scope는 지역 변수처럼 사용됨
- 특징
- 페이지 자체에서 변수 선언하는 것과 큰 차이가 없음
- JSP에서 pageScope에 값을 저장한 뒤, 해당 값을 EL 표기법, JSTL 등으로 활용할 수 있음
Request Scope
- 클라이언트가 보낸 Http 요청을 서버가 받아 응답할 때까지 변수값을 유지
- 사용 방법
- Servlet: HttpServletRequest 객체를 사용
- JSP: request 내장객체를 사용
- 특징
- 포워드를 하더라도 변수값을 유지할 수 있어, 포워드와 함께 자주 사용됨
- 리다이렉트할 경우, 새로운 페이지에서 생기는 request 객체는 이전 페이지의 request 객체와 다르므로 주의
Session Scope
- HttpSession 인터페이스를 구현한 객체를 사용하는 Scope
- 세션 객체가 생성되어 소멸될 때까지 변수값을 유지
- 클라이언트별, 사용자별로 세션을 관리해야 될 때 등의 경우에 사용
- 예시) 온라인 쇼핑 장바구니, 사용자별 로그인 유지
- 사용 방법
- Servlet: getSession( ) 메서드로 반환된 session 객체를 사용
- JSP: session 내장객체를 사용
- 특징
- 세션이 소멸될 때까지 변수값이 유지되므로, 여러 요청에 걸쳐서 사용할 수 있음
- 웹 브라우저 하나에 속한 탭들은 세션정보를 공유하므로, 탭이 다르더라도 사용하는 정보는 같음
- 쿠키(Cookie)와의 차이점
- 세션 정보는 서버에 저장되고, 쿠키는 클라이언트에 저장됨
- 서버에 저장되기 때문에 보안성이 좋고 저장 한계가 없음
- 참고자료: 세션(session)
Application Scope
- ServletContext 인터페이스를 구현한 객체를 사용하는 Scope
- 웹 어플리케이션이 켜져 있는 동안 변수값을 유지
- 모든 클라이언트가 공통으로 사용하는 값이 있을 때 등의 경우에 사용
- 웹 어플리케이션의 예시) Eclipse의 프로젝트
- 사용 방법
- Servlet: getServletContext( ) 메서드로 얻은 application 객체를 사용
- JSP: application 내장객체를 사용
- 특징
- 웹 어플리케이션 하나당 하나의 application 객체가 사용됨
- 어플리케이션이 켜져 있는 동안 객체가 유지되므로 적절한 데이터 관리가 필요
- List 등 데이터가 지속적으로 추가되는 상황이 생기면,
application 객체의 크기가 커지면서 어플리케이션의 속도를 떨어트림 (= 무거워짐)
- List 등 데이터가 지속적으로 추가되는 상황이 생기면,
- 데이터 관리가 적절하게 되지 않을 경우,
데이터 양이 임계점을 넘으면 웹 어플리케이션 자체가 작동하지 않을 수 있음 (= 죽어버림)
'Today I learned > Online Courses' 카테고리의 다른 글
MySQL (Back End) (0) | 2020.04.05 |
---|---|
EL과 JSTL (Back End) (0) | 2020.04.05 |
HTTP redirect & forward (Back End) (0) | 2020.04.03 |
JSP (Back End) ... Part 2 (0) | 2020.04.03 |
JSP (Back End) ... Part 1 (0) | 2020.04.03 |