학습(구)/JSP

페이지 사이의 정보공유

잉아당 2020. 9. 9. 22:06
728x90

페이지와 페이지 사이에서 정보를 공유하는 방법은 정보를 공유하는 페이지의 수에따라 다릅니다..

두 페이지 사이에서의 공유 일 경우 <jsp:param> 액션 태그를 사용합니다.

여러 페이지 사이에서의 공유 일 경우 영역 객체를 사용합니다.

 

<jsp:param>

<jsp:param> 액션태그는 <jsp:forward>나 <jsp:include> 등과 같은 페이지 연결 액션 태그의 자식 태그로 param 액션 태그를 사용하여 연결되는 페이지에 파라미터 정보를 전달 하게 되는데 이때 request 객체의 속성으로 저장되어 전달되어 집니다. 

<%@ page contentType = "text/html; charset=utf-8" %> 
<html>
<head><title>Parameter Send</title></head>
<body>
<%
request.setCharacterEncoding("utf-8") ;
%>
<h4> 교과목 설명 </h4>
<jsp:include page="receiveParameter.jsp" flush="false">
<jsp:param name="subject" value="스프링" />
</jsp:include>
<%-- <jsp:param name="subject" value="JSP" /> --%>
<%-- JSP 주석을 처리할 떄 주석이 jsp:include 액션 태그 몸체에 포함되면 오류가 발생한다.--%>
</body>
</html>

아래의 코드는 위의 코드에 include 액션태그에 의해 포함되어지는 내용입니다.

<%@ page contentType = "text/html; charset=utf-8" %> 
<%
String subject = request.getParameter("subject");
if (subject == null) { 
    return;
} %>
과목명 : <b><%= subject %></b><br/> 
- 선수 과목 :
<% if (subject.equals("JSP")) { %>
자바프로그래밍, 데이터베이스
<% } else if (subject.equals("스프링")) { %>
JSP 프로그래밍, JPA 
<% }%>

param 액션태그로 subject의 값을 넘겨주었고 subject의 값에 따라 나타나는 내용이 달라지게 되었습니다.

include 액션태그 사이에 주석을 사용하면 오류가 발생합니다. 또한 인코딩에 유의해야합니다.

 

영역 객체

JSP에서는 4개의 영역 객체를 제공합니다. 

 

page : 하나의 페이지가 처리될 때 사용, 정보 공유 수단으로 사용하기 어려워 필요 공간 마련 등 경우에만 사용

request : 하나의 요청이 처리될 때 사용, 요청 처리와 관련한 많은 동작 수행

session : 하나의 세션 즉 하나의 브라우저와 연결이 지속될 때 사용, 사용자 인증, 권환정보로 구성되는 로그인 상태 유지 등에 사용

application : 하나의 애플리케이션이 수행될 때 사용, 애플리케이션 시작되면 종료시 살아있고 특별한 경우 아니면 종료하지 않음

 

=> 주로 request와 session을 사용합니다.

 

이러한 영역 객체들은 영역이 소멸되면 영역객체도 소멸되게 됩니다.

영역 객체를 선택할 때에는 영역 객체의 수명과 범위를 반드시 고려해야 합니다.

 

영역 객체 수명 기능
pageContext 페이지 실생 시작과 종료 영역객체 구현, 8개의 기본 객체 구하기
request 요청 전달에서 자동생성, 응답 데이터 송출에서 자동소멸 요청 데이터 읽기, 영역객체 구현
session 세션 시작에서 선택 생성, 세션 종료에서 소멸 영역 객체 구현
application 어플리케이션 시작과 종료 어플리케이션 전체 자원다루기, 영역 객체 구현

 

이러한 영역 객체 사이에서의 정보공유는 특정 페이지가 특정 영역 객체에 속성을 생성하면 나머지 페이지는 그 영역 객체의 속성을 추출하고 제거하는 형태고 필요한 정보를 공유합니다.

 

setAttribute(String name, Object value) : 속성 생성 -> 모든 객체를 수용해야 하므로 Object로 업캐스팅하여 모든 클래스를 상속합니다.

getAttribute(String name) : name의 이름값을 가진 속성을 추출하는데 Object 로 반환되어져 다운 캐스팅이 필요합니다.

removeAttribute(String name) : name의 이름값을 가진 속성을 제거합니다.

'학습(구) > JSP' 카테고리의 다른 글

로그인(쿠키와 세션)  (0) 2020.09.10
화면 모듈화와 소스 모듈화  (0) 2020.09.09
기능 모듈화 (forward액션태그와 redirect)  (0) 2020.09.09
Java Bean  (0) 2020.09.07
form페이지와 action 페이지  (0) 2020.09.03