페이지와 페이지 사이에서 정보를 공유하는 방법은 정보를 공유하는 페이지의 수에따라 다릅니다..
두 페이지 사이에서의 공유 일 경우 <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 |