<영역객체>
-데이터를 저장, 수정 삭제 등 관리를 해주는 객체
-4개 영역의 역할은 동일하나 유효범위(scope)가 다르다
1. pageContext :동일한 페이지 내에서만
2. request : 포워드된 페이지까지
3. session : 동일한 도메인인 경우 모든페이지에서 사용가능, 브라우저 닫으면 정보 사라짐 (페이지에 대한 제한 x)
(자바의 static변수와 같아?)
4. application : 웹서버가 종료되기 전까지 유지 (종료할일없음)
**일회성 데이터를 session/application에 무작정 넣으면 불필요한 데이터가 쌓이게 된다 ->서버부하
<공통메서드>
- vod setAttribute(String name, Object value)
- 수정+저장
- 첫번째 인수 : 속성명, 두번째 : 저자할 값
- Object 타입이므로 모든 타입의 객체를 저장 할 수 있음
- void getAttribute(String name)
- 속성값 읽기
- Object 로 자동 형변환되어 저장되므로 원래 타입으로 형변환 후 사용해야 함
- void removeAttribute(String name)
- 삭제
- 삭제하려는 속성명이 없어도 오류 발생하지 않음
<page 영역>
1. DTO클래스 import
<%@ page import="common.Person"%>
2.pageContext 객체를 통해 page영역에 속성값 추가
<%
pageContext.setAttribute("pageInteger",1000);
pageContext.setAttribute("pageString", "페이지영역");
pageContext.setAttribute("pagePerson", new Person("홍길동",30));
%>
3. 원래 타입으로 형변환해서 값 가져옴
<%
int num = (Integer)(pageContext.getAttribute("pageInteger"));
String str = (String)(pageContext.getAttribute("pageString"));
Person p = (Person)(pageContext.getAttribute("pagePerson"));
%>
4. 출력
<body>
<ul>
<li><%=num %></li>
<li><%=str %></li>
<li><%=p.getName() %>,<%=p.getAge() %></li>
</ul>
<h2>페이지 이동 후 page 영역 읽어오기</h2>
<a href="PageLocation.jsp">다음 페이지로 이동</a>
</body>
**include 지시어로 포함시킨 파일은 하나의 페이지로 page영역이 공유된다.
**a 태크로 링크를 통해 다른 페이지로 이동 할 경우 속성을 가져올 수 없다.
<request 영역>
request.getRequestDispatcher("RequesForward.jsp");
: request 내장 객체를 통해 실제로 포워드를 수행하는 메서드
.forward(request, response) : 쿼리스트링을 통해 매개변수 전달 가능
request객체를 다음 페이지에서 사용하려면 반드시 forward 방식으로 이동해야 함
request 영역에 저장된 속성들 (request.jsp에서 저장한) 문제 없이 출력됨
**페이지 이동 메서드 구분**
request.getRequestDispatcher => .forward 포워드 방식(url주소 안바뀜), request에 대한 제어권 넘김
response.sendRedirect => 단순 페이지 이동 (주소 바뀜).
request 객체를 받아오는페이지 이므로, 이전 페이지에서 데이터 처리가 되어야 한다. (forward로 이동해야한다)
단독 실행 시 500 오류 발생
**forward 방식은 이동 후에도 이전 페이지의 주소값이 유지된다
<Session 영역>
동일 도메인내에서 페이지 이동 후에도 유지
브라우저를 닫기 전까진 범위제한이 없는것
로그인 기능에서 자주 사용
<session 영역에 저장>
<%
ArrayList<String> lists = new ArrayList<String>();
lists.add("리스트");
lists.add("컬렉션");
session.setAttribute("lists",lists);
%>
<application 영역>
브라우저를 닫았다 열어도 유지
서버를 끄기 전까지 유지된다
<application 영역에 데이터 저장>
<%
Map<String,Person> maps = new HashMap<>();
maps.put("actor",new Person("리미",28));
maps.put("actor",new Person("빈이",31));
application.setAttribute("maps",maps);
%>
'jsp' 카테고리의 다른 글
cookie (0) | 2022.11.24 |
---|---|
자바빈 클래스 (0) | 2022.11.23 |
jsp_내장객체 (application) (0) | 2022.11.23 |
jsp_내장객체(response) (0) | 2022.11.23 |
jsp_기본 (0) | 2022.11.22 |