1. 기본 객체의 속성(Attribute) 사용
- API : http://docs.oracle.com/javaee/7/api/javax/servlet/ServletRequest.html
- 네 개의 기본객체 pagecontext, request, session, application 는 속성을 갖고 있다.
- 속성은 각각의 기본 객체가 존재하는 동안에 사용될 수 있고, JSP 페이지 사이에서 정보를 주고 받거나 공유하기 위한 목적으로 사용된다.
- <속성이름, 값> 형태를 가지고, 서로 다른 이름을 가진 속성을 여러개 포함할 수 있다.
메서드 |
반환형 |
설명 |
setAttribute(String name, Object value) |
void |
이름이 name인 속성의 값을 value로 지정한다. |
getAttribute(String name) |
Object |
이름이 name인 속성의 값을 구한다. 존재하지 않을 경우 null을 반환한다. |
removeAttribute(String name) |
void |
이름이 name인 속성을 삭제한다. |
getAttributeNames() |
Enumeration |
속성의 이름 목록을 구한다. (pageContext 제외) |
<!-- setAttribute.jsp --> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>application setAttribute</title> </head> <body> <form action="getAttribute.jsp" method="post"> <table border="0" cellpadding="10" cellspacing="10"> <tr align="center"> <th>속성 이름</th> <td><input type="text" name="name"></td> </tr> <tr align="center"> <th>속성 값</th> <td><input type="text" name="value"></td> </tr> <tr align="center"> <td colspan="2"> <input type="submit" value="보내기"> <input type="reset" value="취소"> </td> </tr> </table> </form> </body> </html> <!-- 입력 값 test1 / 1234 test2 / 1234 test3 / 1234 -->
<!-- getAttribute.jsp --> <%@page import="java.util.Enumeration"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("UTF-8"); String name = request.getParameter("name"); String value = request.getParameter("value"); if (name != null && value != null) { application.setAttribute(name , value); } %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>application getAttribute</title> </head> <body> <% Enumeration attrEnum = application.getAttributeNames(); while (attrEnum.hasMoreElements()) { String name2 = attrEnum.nextElement().toString(); Object value2 = application.getAttribute(name2); %> application 속성 : <b><%=name2 %></b> / <%=value2 %><br> <% } %> </body> </html> <!-- 실행결과 application 속성 : org.apache.catalina.WELCOME_FILES / [Ljava.lang.String;@feac5e5 application 속성 : javax.servlet.context.tempdir / C:\Users\Administrator\ecl . . . 중간 생략 . . . st.server.core\tmp0\work\Catalina\localhost\Blog application 속성 : org.apache.catalina.jsp_classpath / /jar;/C:/Program%20File . . . 중간 생략 . . . Program%20Files/Java/jre7/lib/ext/zipfs.jar application 속성 : org.apache.jasper.runtime.JspApplicationContextImpl / org.apache.jasper.runtime.JspApplicationContextImpl@7e66458c application 속성 : org.apache.catalina.resources / org.apache.naming.resources.ProxyDirContext@6c602b28 application 속성 : test2 / 1234 application 속성 : test1 / 1234 application 속성 : test3 / 1234 application 속성 : org.apache.AnnotationProcessor / org.apache.catalina.util.DefaultAnnotationProcessor@1db186ae -->
2. 속성의 값 타입
- 속성의 이름은 문자열을 나타내는 String 타입이지만, 값은 기본 데이터 타입을 제외한 나머지는 모든 클래스 타입이 올 수 있다.
- 기본 데이터 타입의 경우는 래퍼 타입을 대신 사용해야 하지만, 자바 5버전부터 자동 변환을 처리해주는 오토 박싱/오토 언박싱 기능이 추가되었다.
- 오토박싱/언박싱 기능을 사용하지 않고 래퍼 타입에서 직접 값을 가져올 때에는 래퍼클래스가 제공하는 메서드를 사용한다.
메서드 |
반환형 |
설명 |
intValue() |
int |
래퍼 클래스가 지정한 값을 int 타입으로 구한다. |
longValue() |
long |
래퍼 클래스가 지정한 값을 long 타입으로 구한다. |
floatValue() |
float |
래퍼 클래스가 지정한 값을 float 타입으로 구한다. |
doubleValue() |
double |
래퍼 클래스가 지정한 값을 double 타입으로 구한다. |
shortValue() |
short |
래퍼 클래스가 지정한 값을 short 타입으로 구한다. |
byteValue() |
byte |
래퍼 클래스가 지정한 값을 byte 타입으로 구한다. |
booleanValue() | boolean | 래퍼 클래스가 지정한 값을 boolean 타입으로 구한다. |
3. 속성의 활용
- 속성을 저장하기 위해서 request, session 객체가 많이 사용된다.
- request 객체의 속성은 MVC 패턴 구축에 많이 사용되고, session 객체의 속성은 로그인 로그아웃 같은 사용자 인증정보에 많이 사용된다.
기본객체 |
영역 |
쓰임새 |
pageContext |
PAGE |
한번의 요청을 처리하는 하나의 JSP 페이지 내에서 공유될 값을 저장한다. (커스텀 태그에서 새로운 변수를 추가 할 때 사용) |
request |
REQUEST |
한번의 요청을 처리하는데 사용되는 모든 JSP 페이지에서 공유될 값을 저장한다. (정보를 전달하기 위해 사용) |
session |
SESSION |
한 사용자와 관련된 정보를 JSP들이 공유하기 위해서 사용한다. (사용자의 로그인 정보와 같은 것들을 저장) |
application |
APPLICATION |
모든 사용자와 관련해서 공유할 정보를 저장한다. (임시 디렉터리 경로와 같은 웹 어플리케이션의 설정 정보를 저장) |
'Java > Java EE' 카테고리의 다른 글
JSP 디렉티브(Directive)(지시자) - include (0) | 2013.09.19 |
---|---|
JSP 액션 태그 - <jsp:include> (0) | 2013.09.19 |
JSP 기본(내장) 객체 영역과 속성 (0) | 2013.09.17 |
JSP 기본(내장) 객체 - out, pageContext, application, page (0) | 2013.09.16 |
JSP 실행(처리) 과정 (0) | 2013.09.16 |