본문 바로가기
Programming/Jsp

[JSP] 내장(기본) 객체의 속성(Attribute)

by prinha 2020. 7. 23.
반응형

 

 

[JSP] 내장객체(Implicit Object)와 영역(Scope)

JSP 내장객체 (Implicit Object)란? 웹 컨테이너가 객체 생성 없이 바로 사용할 수 있게 제공하는 객체 1. request 객체 - javax.servlet.http.HttpServletRequest  - 웹 브라우저의 요청 정보를 저장하고 있는..

prinha.tistory.com


 

속성을 가지고 있는 네 개의 기본 객체

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="보내기">&nbsp;&nbsp;&nbsp;<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]

 

 

반응형