page 영역은 기본적으로 클라이언트의 요청을 처리하는 데 관여하는 JSP페이지마다 하나씩 생성된다.
page 영역을 사용하기 위한 pageContext 객체를 할당받게 되는데, 이 객체에 저장된 정보는
해당 페이지에서만 사용할 수 있고 페이지를 벗어나면 소멸된다.
예제)
PageContextMain.jsp 생성
<%@page import="common.Person"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
pageContext.setAttribute("pageInteger", 1000);
pageContext.setAttribute("pageString","페이지의 문자열");
pageContext.setAttribute("pagePerson", new Person("한석봉",99));
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>page 영역의 속성값 읽기</h2>
<%
int pInteger =(Integer)(pageContext.getAttribute("pageInteger"));
String pString = (String)(pageContext.getAttribute("pageString"));
Person pPerson = (Person)(pageContext.getAttribute("pagePerson"));
%>
<ul>
<li>Integer 객체 : <%= pInteger%></li>
<li>String 객체 : <%= pString%></li>
<li>Person 객체 : <%= pPerson.getName()%>,<%=pPerson.getAge() %></li>
</ul>
<h2>include된 파일에서 page 영역 읽어오기</h2>
<%@include file ="PageInclude.jsp" %>
<h2>페이지 이동 후 page 영역 읽어오기</h2>
<a href="PageLocation.jsp">PageLocation.jsp 바로가기</a>
</body>
</html>
include 파일인
PageInclude.jsp 생성
<%@page import="common.Person"%>
<%@ 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>
<h4>Include 페이지</h4>
<%
int pInteger2 = (Integer) (pageContext.getAttribute("pageInteger"));
String pString2 = (String) (pageContext.getAttribute("pageString"));
Person pPerson2 = (Person) (pageContext.getAttribute("pagePerson"));
%>
<ul>
<li>Integer 객체 : <%=pInteger2%></li>
<li>String 객체 : <%=pString2%></li>
<li>Person 객체 : <%=pPerson2.getName()%>,<%=pPerson2.getAge()%></li>
</ul>
</body>
</html>
화면 출력
<a>태그 링크로 이동할 별도 페이지
PageLocation.jsp 파일 생성
<%@page import="common.Person"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>page 영역</title>
</head>
<body>
<h2>이동 후 page 영역의 속성값 읽기</h2>
<%
Object pInteger = pageContext.getAttribute("pageInteger");
Object pString = pageContext.getAttribute("pageString");
Object pPerson = pageContext.getAttribute("pagePerson");
%>
<ul>
<li>Integer 객체 : <%=(pInteger == null) ? "값 없음" : pInteger %></li>
<li>String 객체 : <%=(pString == null) ? "값 없음" : pString %></li>
<li>Person 객체 : <%=(pPerson == null) ? "값 없음" : ((Person)pPerson).getName()%></li>
</ul>
</body>
</html>
화면 출력
1. Person.java 객체 사용을 위해서 import 함
2. pageConnext 객체를 통해 page 영역에 속성값을 저장했음. (set)
3. 저장한 속성값을 다시 읽어 옴 (get) -> 이때 set을 할 경우 object 타입으로 저장되기 때문에 다시
원래의 타입으로 형변환을 해줘야함 .
4. Person 객체를 불러올때는 게터 메서드를 통해 읽어옴
5. include 지시어로 다른 jsp을 포함시킬 수 있음. 페이지 영역은 그대로 유지되고 합쳐진다고 생각하면 됨.
-> 같은 페이지로 봄
6. <a>태그의 사용으로 다른 페이지로 이동할 수 있음. 따라서 이전 페이지에서 만든 page 영역은 소멸
1) 페이지 속성값을 가져옴 (get)
2) 가져오려는 속성이 존재하지 않는다면 getAttiribute()메서드가 null을 반환하고, null을 int 타입 변수에 담으려 시도한 다면 예외 발생이 됨. -> null이 아닌지 확인 하는걸로 -> 값 없음 확인 완료
3) <a> 태그를 통한 이동은 새로운 페이지를 요청하는 것이므로 다른 페이지임 -> page영역 공유 x
'BACKEND > Java' 카테고리의 다른 글
Scope ) session 영역 (0) | 2023.09.26 |
---|---|
Scope ) request 영역 (0) | 2023.09.26 |
데이터 전송 객체(DTO) 준비, 자바빈즈 (0) | 2023.09.26 |
[프로그래머스] 피자 나눠 먹기 (1) (0) | 2023.09.21 |
[프로그래머스] 아이스 아메리카노 구매가능 개수와 거스름돈 (0) | 2023.09.21 |