
Scope
:변수가 유효성을 갖는 영역
→jsp페이지에서 사용되는 객체들은 jsp내장객체이든 페이지 내에서 만들어졌던 간에 모두 정해진 영역 안에서만 사용 가능
- page scope
:실제 선언된 jsp페이지 내에서만 사용가능(약간 지역변수 같음)
→pageContext내장객체로 사용 가능
→저장된 값은 저장한 페이지 내에서 지역변수로 사용
→pageScope에 값을 저장한 후 EL표기법 사용
→해당 jsp나 servlet이 실행되는 동안에만 정보 유지하고자 할 때 사용
pagescope 실습
값 저장
<% // page 영역에 값 저장 // pageContext pageContext.setAttribute("nick", "페이지 영역"); // page 영역에서 값 가져오기 String nick = (String)pageContext.getAttribute("nick"); //el 표기법은 바로 값을 가져온다. 위 코드 없어도 됨 %> 닉네임 : <%=nick %><br> 닉네임(el) :${nick}<br> <a href="Ex01_pageScope2.jsp">2페이지로 이동</a><% // page 영역에서 값 가져오기 String nick = (String)pageContext.getAttribute("nick"); %> 닉네임 :<%=nick %> <!-- null로 출력된다. -->
request scope
:클라이언트로부터 요청을 받고 응답할 때까지 사용가능
→ 응답을 받으면 끝난다!
reqeust 실습
원래는 null로 떠서 forward방식으로 해보자
값 가져오기<% //request 영역에 값 저장하기 request.setCharacterEncoding("UTF-8"); request.setAttribute("name", "서영"); // request 영역에서 값 가져오기 String name = (String)request.getAttribute("name"); //request 위 코드 필요 없음 //forwarding 방식으로 페이지 이동 RequestDispatcher rd = request.getRequestDispatcher("Ex02_requestScope2.jsp"); rd.forward(request, response); %> <!-- 화면에 출력 + EL문법으로도 출력 --> 이름 : <%=name %><br> 이름(el) : ${name}<br> <a href="Ex02_requestScope2.jsp">2 페이지로 이동</a><% String name = (String)request.getAttribute("name"); %> 이름 : <%=name %>
session scope
:세션이 유지되는 동안 사용 가능
서로 다른 브라우저에서는 변수를 공유 할 수 없다.
→ 같은 브라우저에서만 가능!!
<% session.setAttribute("nick", "서영"); String nick = (String)session.getAttribute("nick"); %> 닉네임 : <%=nick %><br> 닉네임(el) : ${sessionScope.nick}<br> <a href="Ex03_sessionScope2.jsp">2페이지로 이동</a><% String nick = (String)session.getAttribute("nick"); %> 닉네임 : <%=nick %>
Application scope
:웹 어플리케이션이 시작되고 종료될 때까지 사용 가능
→ 다른 브라우저도 값 공유 가능
→ 모든 클라이언트들이 공통적으로 사용하는 값 저장
Application scope 실습
<% application.setAttribute("nick", "서영"); String nick = (String)application.getAttribute("nick"); %> 닉네임 : <%=nick %><br> 닉네임(el) : ${applicationScope.nick}<br> <a href="Ex04_applicationScope2.jsp">2페이지로 이동</a><% String nick = (String)application.getAttribute("nick"); %> 닉네임 : <%=nick %><br> 닉네임 : ${applicationScope.nick}->el문법 사용면 getAttribute 안 써도 된다.