[JSP] 5.6 JSP 기본 객체의 속성(Attribute) 사용하기
2022. 4. 8. 12:21ㆍJAVA/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 프로그래밍 기초부터 중급까지
'JAVA > Servlet&JSP' 카테고리의 다른 글
[JSP] 6.2 에러 페이지 작성하기 (0) | 2022.04.08 |
---|---|
[JSP] 6.1 에러 페이지 지정하기 (0) | 2022.04.08 |
[JSP] 5.5 JSP 기본 객체와 영역 (0) | 2022.04.08 |
[JSP] 5.4 기본 객체: application (0) | 2022.04.08 |
[JSP] 5.3 기본 객체: pageContext (0) | 2022.04.07 |