본문 바로가기
IT/JSP

[JSP] - 20. 기본 객체의 속성(Attribute) - pageContext, request, session, application

by 차이나는 개발자 2020. 7. 23.
728x90
반응형

#기본 객체의 속성(Attribute) - pageContext, request, session, application

 

 

#네 개의 기본 객체 pageContext, request, session, application은 속성을 갖는다.

기본 객체들이 존재하는 동안 기본 객체의 속성을 사용할 수 있다.

속성은 JSP페이지 사이에서 정보를 주고받거나 공유하기 위한 목적으로 사용된다.

 

 

속성(상태)

-영역들이 가지고 있는 속성

-값을 저장할 수 있는 공간

-유지를 할 수 있다.

-e.g.) 로그인 중 -> 메일 버튼 클릭 -> 로그인했다고 기억중(session)

-application(한 명 한 명 각기 다른 정보를 저장하는 영역이 아님)

-속성 <속성 이름, 값> : 이름은 중복될 수 없다.

 

 

#속성 처리 메서드

메서드 리턴타입 설명
setAttribute(String name, Object value) void 이름이 name인 속성의 값을 value로 지정한다. 없으면 새로 생성한다.
getAttribute(String name) Object
(자바의 모든 객체를 다 넣을 수 있다.  >>형변환이 필요)
이름이 name인 속성의 값을 구한다. 지정한 이름의 속성이 존재하지 않으면 null을 리턴한다. 
removeAttribute(String name) void 이름이 name인 속성을 삭제한다.
getAttributeNames() Enumeration<String> 속성의 이름 목록을 구한다. (pageContext기본 객체는 이 메서드를 제공하지 않는다.)

 

 

예제1) setAttribute 메서드 사용

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<%
	String name = request.getParameter("name");
	String value = request.getParameter("value");
	
	if(name != null && value != null){
		application.setAttribute(name, value);
	}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>application 속성 지정</title>
</head>
<body>
<%
	if(name != null && value != null){
		
%>
application 기본 객체의 속성 설정 :
<%= name %> = <%= value %>
<%
	}else{
%>
application 기본 객체의 속성 설정 안 함
<%
	}
%>
</body>
</html>

 

 

#setApplicationAttribute.jsp는 URL로 전달받은 파라미터를 application기본 객체의 속성으로 설정한다.

 

 

# "?" 뒤 쿼리 문자열에 속성 이름과 속성 값을 지정하면 다음과 같은 결과 화면 출력한다.

 

 

예제 2) getAttributeNames, getAttribute메서드 사용

<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
	pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<%
		Enumeration<String> attrEnum = application.getAttributeNames();
		while (attrEnum.hasMoreElements()) {
			String name = attrEnum.nextElement();
			Object value = application.getAttribute(name);
	%>
	application 속성 : <b><%= name %></b> = <%= value %><br>
	<%
		}
	%>
</body>
</html>

 

 

-결과 화면

: 앞서 설정했던 속성 이름과 속성 값이 들어가 있는 것을 확인할 수 있다.

 

 

#속성의 활용

기본 객체 영역 쓰임새
pageContext  PAGE (한 번의 요청을 처리하는) 하나의 JSP 페이지 내에서 공유할 값을 저장한다. 주로 커스텀 태그에서 새로운 변수를 추가할 때 사용한다.
request REQUEST 한 번의 요청을 처리하는 데 사용되는 모든 JSP 페이지에서 공유할 값을 저장한다. 주로 하나의 요청을 처리하는 데 사용하는 JSP 페이지 사이에서 정보를 전달하기 위해 사용된다.
session SESSION 한 사용자와 관련된 정보를 JSP 사이에 공유하기 위해 사용한다. 사용자의 로그인 정보와 같은 것들을 저장한다.
application APPLICATION 모든 사용자를 위해 공유할 정보를 저장한다. 임시 폴더 경로와 같이 웹 어플리케이션의 설정 정보를 주로 저장한다.

 

 

#Parameter & Attribute 특징

Parameter
-키 name(String), 값 value(String)

-사용자 입장이라 value값이 단순히 String만으로 가능하다. (애플리케이션 외부)

-파라미터를 사용하는 주체는 사용자이다.

-get밖에 없다. (읽기만 가능하다)

-파라미터는 사용자의 의도를 담고있다.


Attribute
-키 name(String), 값 value(Object)

-개발자의 입장이라 value값이 Object로 가능하다. (어플리케이션 내부) 
-attribute를 사용하는 주체는 개발자이다.
-get, set, remove가 다 있다.

 

 

 

728x90
반응형

댓글