⭐️ JSP에서 Scope란 ?
Scope란 웹 애플리케이션에서 변수(데이터)의 유효 범위를 저장하는 개념이다.
JSP는 데이터를 저장할 수 있는 4가지의 스코프를 제공하며, 각 스코프에 따라 데이터 유지 범위와
공유 가능성이 달라진다.
위 사진과 같이 4가지 스코프가 존재한다.
📌 page scope(현재 JSP 페이지에서만 유효)
현재 JSP 페이지에서만 유지되는 데이터.
페이지가 바뀌면 데이터가 사라진다.
공유범위가 가장 좁다.
같은 JSP 내에서만 사용가능하다. -> 다른 JSP로 이동하면 변수값 유지 X
[ Page Scope 예시 ]
<% pageContext.setAttribute("msg", "안녕하세요! (page 스코프)"); %>
<p>${msg}</p>
<!-- 현재 페이지에서만 사용 가능 -->
EL을 이용하여 키를 입력하여 값을 출력
📌 request scope
클라이언트의 요청때마다 매번 생성되는 객체 , 클라이언트의 요청이 끝날 때까지 유지됨.
이 영역에 데이터를 담으면 해당 request객체를 포워딩 받는 응답 jsp에서만 사용 가능.
[ request scope 예시 ]
req.setAttribute("scope", "request scope");
req.setAttribute("student", new Person("홍길동", 20, "남자"));
req.setAttribute("classRoom", "1강의장");
// 포워딩
req.getRequestDispatcher("views/1_EL/01_el.jsp").forward(req, resp);
[ 포워딩 받는 jsp ]
수강생 정보
<ul>
<li>이름 : ${student.name}</li>
<li>나이 : ${student.age}</li>
<li>성별 : ${student.gender}</li>
</ul> <br>
강의장 : ${classRoom} <br>
scope값 : ${scope}
📌 session scope
한 브라우저당 1개 존재하는 객체.
이 영역에 데이터를 담으면 jsp/servlet단에서 사용 가능.
브라우저를 닫거나 세션이 만료될 때까지 유지된다 (기본 30분)
[ session scope 예시 ]
// 객체 생성해줘야 사용 가능
HttpSession session = req.getSession();
session.setAttribute("scope", "session");
session.setAttribute("academy", "코딩스쿨");
session.setAttribute("teacher", new Person("김지원", 27, "여자"));
[ 포워딩 받는 jsp ]
학원명 : ${academy} <br>
강사 : ${teacher.name}, 나이 : ${teacher.age} , 성별 : ${teacher.gender}<br>
scope값 : ${scope}
결과가 다음과 같이 나오는 이유는
scope는 가장 가깝고, 존재하는 scope부터 찾기 때문에
page > request > session > application 순으로 scope를 찾는다 ‼️
결과가 reuqest scope로 나오는 이유는 request 객체를 포워딩 받았기 때문에 scope는
request scope인것이다.
📌 application scope
한 애플리케이션당 1개만 존재하고,
웹 애플리케이션 전체에서 공유되는 데이터이다.
서버가 종료될 때까지 유지된다.
[ application scope 예시 ]
<%
application.setAttribute("siteName", "My Website");
%>
<p>웹사이트 이름: ${siteName}</p>
Scope의 범위를 알면 get메서드를 통해서 직접
값을 꺼내지않고 EL문법을 통해서 더 간편하게 꺼낼 수 있다.
'Server > JSP - TomCat - Servlet' 카테고리의 다른 글
JSP 포워딩(Forwarding)과 리다이렉트(Redirect)의 차이 (1) | 2025.02.27 |
---|---|
session.removeAttribute()와 session.invalidate() 차이 (2) | 2025.02.26 |
JSTL에 대하여 (2) | 2025.02.24 |
Servlet에대하여 (0) | 2025.02.21 |
IntelliJ 와 Tomcat 연결 (2) | 2025.02.20 |