JspServlet #10 Scope(request,session)

장서영·2023년 11월 1일

JspServlet

목록 보기
8/11
post-thumbnail

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 안 써도 된다.

profile
영이의 일상은 짱셔요

0개의 댓글