속성을 가지고 있는 네 개의 기본 객체
pagecontext / request / session / application
1. 기본 객체의 속성(Attribute)
- API : http://docs.oracle.com/javaee/7/api/javax/servlet/ServletRequest.html
- 속성은 각각의 기본 객체가 존재하는 동안에 사용될 수 있음
- 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 |
모든 사용자와 관련해서 공유할 정보를 저장한다. (임시 디렉터리 경로와 같은 웹 어플리케이션의 설정 정보를 저장) |
참고, 출처: https://gangzzang.tistory.com/entry/JSP-기본-객체의-속성Attribute [갱짱.study]
'Programming > Jsp' 카테고리의 다른 글
[JSP] 소스는 동일하지만 프로젝트명이 다를 때의 파일 경로 (0) | 2020.07.23 |
---|---|
[JSP] 내장객체(Implicit Object)와 영역(Scope) (0) | 2020.07.21 |
[JSP] JDBC 커넥션풀 설정 소스 / server.xml / web.xml (0) | 2020.07.21 |
[JSP/Servlet] HTTP Redirect / Dispatcher (forward, include) (0) | 2020.07.21 |
[JSP] 표현 언어 EL(Expression Language) 문법 (0) | 2020.07.14 |