[JSP] 5.6 JSP 기본 객체의 속성(Attribute) 사용하기

2022. 4. 8. 12:21JAVA/Servlet&JSP

네가지 기본 객체(page, request, session, application)은 속성을 갖고 있습니다. 네가지 기본 객체의 속성 처리 메서드는 다음과 같습니다.

메서드 리턴 타입 설명
setAttribute(String name, Object value) void 이름이 name인 속성의 값을 value로 설정
getAttribute(String name) Object 이름이 name인 속성을 리턴, 존재하지 않을 경우 null 리턴
removeAttribute(String name) void 이름인 name인 속성을 제거
getAttributeNames() java.util.Enumeration 기본 객체의 속성의 이름 목록을 반환, pageContext 기본 객체는 이 메서드를 제공하지 않음

 

setApplicationAttribute.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%
    	String name = request.getParameter("name");
    	String value = request.getParameter("value");
    	
    	if(name != null && value != null)
    	{
    		application.setAttribute(name, value);
    	}
    %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
	if(name != null && value !=null){
%>
application 기본 객체의 속성 설정:
<%=name %> = <%=value %>
<br>
application 기본 객체의 name 속성의 값 
value : <%=application.getAttribute(name) %>
<%
	}else{
%>
application 기본 객체의 속성 설정 안함
<%
	}
%>
</body>
</html>

 

다음 예제는 application 기본 객체의 속성들을 출력하는 예제입니다.

viewApplicationAttribute.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ page import="java.util.Enumeration" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
	Enumeration e = application.getAttributeNames();

	while(e.hasMoreElements())
	{
		String name = (String)e.nextElement();
		Object value = application.getAttribute(name);
	
%>
	application 속성: <b><%=name %></b>=<%=value %><br>
<%
	}
%>
</body>
</html>

위 결과를 보면 이전 예제에서 application 기본 객체의 속성을 설정한 name="attr1", value="value1"을 보실 수 있습니다. 위와 같이 JSP 페이지는 달라도 같은 어플리케이션 영역에 있기 때문에 application 기본 객체로 속성을 참조할 수 있다는 것을 볼 수 있습니다.

 

1. 속성의 값 타입

기본 객체의 메서드인 setAttribute()와 getAttribute() 메서드의 선언은 다음과 같습니다.

public void setAttribute(String name, Object value)

public Object getAttribute(String name)
  • 속성의 값 value는 Object 타입으로 저장되고 반환됨
  • setAttribute 메서드 호출시 value 매개변수에 Date, String, File과 같은 타입을 속성의 값으로 지정할 수 있음
  • getAttribute 메서드로 속성을 가져올 시 Object 타입이기 때문에 변수에 저장하기 위해서 타입 캐스팅이 필요함
  • 속성 값을 저장시 int, double과 같은 기본 데이터 타입은 저장할 수 없음. 왜냐하면 Object 타입은 레퍼런스 타입만 받기 때문이다.
session.setAttribute("session_start", new java.util.Date());

Date date = (Date) session.getAttribute("session_start");
  • 기본 데이터 타입의 값을 저장하기 위해서는 래퍼(Wrapper) 클래스를 사용하여야함

 

숫자 타입에 대한 래퍼 클래스

  • int - java.util.Integer
  • long - java.util.Long
  • short - java.lang.Short
  • byte - java.lang.Byte
  • float - java.lang.Float
  • double - java.lang.Double
  • boolean - java.lang.Boolean

래퍼 클래스란 기본 데이터 타입에 대한 매핑되는 클래스를 래퍼 클래스라고 합니다.

Integer intValue = new Integer(100);
request.setAttribute("score", intValue);

Integer intValue = (Integer) request.getAttribute("score");
int value = intValue.intValue();

 

2. 속성의 활용 방법

속성의 용도

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

 

References

source code : https://github.com/yonghwankim-dev/JSP2.0/tree/master/jsp2/src/main/webapp/Chapter05
JSP 2.0 프로그래밍 기초부터 중급까지