본문 바로가기
jsp

jsp_영역객체

by 신방동불주먹 2022. 11. 23.

<영역객체>

 

-데이터를 저장, 수정 삭제 등 관리를 해주는 객체

-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