반응형
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%-- page 영역(pageContext)[1개 JSP파일] <= 
		 request 영역(request)[1개 화면에 해당되는 크기] <
		 session 영역(session)[[웹브라우저영역]  <
		 application 영역[그 상위버전 새 브라우저 열어도 남아있음, 서버에 남아 있어서](application) 
	--%>
	<h5> 4개의 영역과 속성 알아보기</h5>
	
	<% application.setAttribute("testId", "Yongmi"); %> 
	<%-- testId(속성) = "Yongmi" 
	pageContext는 jsp 한 페이지기 때문에 범위를 굳이 안 해줘도 된다 --%>  
	<form method = "post" action = "second.jsp">
		<input type ="submit" value = "2번째 페이지로">
	</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1> 2번째 페이지</h1>

<h3> setAttribute 내용 : <%= (String)application.getAttribute("testId") %> </h3>
<h3> setAttribute 내용 : <%= (String)application.getAttribute("wrongAttribute") %> </h3>
<%-- index에 선언한 session 범위 testId를 가져올때 사용 법 --%>

</body>
</html>

지금까지 name을 이용해 getParameter로 값을 받았습니다.

이번에는 변수를 선언하는 거처럼 값을 넘기는 걸 배우도록 하겠습니다.

 

JSP에는 페이지에 대한 영역이라는게 있는데 총 4개가 있습니다.

page 영역(pageContext)[1개 JSP파일] <= 
request 영역(request)[1개 화면에 해당되는 크기] <
session 영역(session)[[웹브라우저영역]  <
application 영역[그 상위버전 새 브라우저 열어도 남아있음, 서버에 남아 있어서](application)

📝1. page 영역

page영역으로 값을 선언하면 그 값은 그 JSP페이지에서만 남아 있습니다.

굳이 이러한 방법을 쓸 필요가 없이 그냥 스크립트릿으로 선언하던가 선언문으로 선언하면 되기 때문에

이 영역은 잘 안 쓰이게 됩니다.

 

📝2. request 영역

request영역으로 값을 선언하면 그 값은 1개 화면에 그 변수를 쓸 수 있습니다.

그 화면에는 JSP파일이 여러개로 만들어 졌을수도 1개로 이루어졌을 수도 있습니다. (모듈화 이야기)

 

📝3. session 영역

session영역으로 값을 선언하면 그 값은 웹브라우저내에 계속 남아있습니다.

웹브라우저 영역이라는 건 구글 크롬을 키고 새 페이지를 열고 어디 페이지를 가든 남아있다는 소리입니다.

예시를 들자면 로그인 해놓고 다른 작업을 하다 새페이지를 키고 다시 거기로 들어가면 로그인이 되어있는 거라고

이해하시면 이해하기 쉬울 것입니다.

 

📝4. application 영역

application영역으로 값을 선언하면 그 값은 서버내에 계속 남아있습니다. 

서버를 끄지 않는 이상 그 값은 계속 남아있죠 예를 들자면 크롬을 껏다켜도 서버가 켜져있기 때문에

그 값은 사라지지 않습니다. 우리가 지금 하는 작업으로는 톰캣을 껐다켜야지면 그 값이 사라지게 되는 것이죠

 

 

이제 선언하는 법에 대해서 알아보도록 하겠습니다.

 

영역.setAttribute("속성명", "속성값");

<% application.setAttribute("testId", "Yongmi"); %> 

이런식으로 선언하면 됩니다.

 

(형변환)영역.getAttribute("속성명")

<%= (String)application.getAttribute("testId") %>

이렇게 속성값을 출력하거나 가져올 수있습니다.

또한 만약 속성명이 없다고 해도 에러가 나오는게 아니라 null값을 출력해줍니다.

반응형