ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JSP | JavaBean Action Tag 자바빈 연동 액션 태그
    JAVA/JSP 2020. 2. 20. 17:32

    JavaBean과 연동하는 액션 태그

    JSP에서 정의된 자바빈 객체에 접근하기 위한 액션 태그

    액션 태그 설명
    < jsp:useBean id="..." class="..." scope="..."/ > 자바빈 객체 생성
    < jsp:setProperty name="..." property="..." value="..."/ > 생성된 자바빈 객체의 프로퍼티 값 저장
    < jsp:getProperty name="..." property="..."/ > 생성된 자바빈 객체의 프로퍼티 값을 얻어냄
    • 위의 액션 태그들이 JSP페이지에서
      자바빈 객체를 생성하고 Setter, Getter 메소드를 사용하는 과정을 대체함
    • 자바빈과 연동되는 태그이기 때문에 자바빈 파일이 작성되어 있어야 함
    • 입력 데이터의 양이 많을 때는 자바빈 클래스를 직접 쓰기 보다 액션 태그를 사용하는 것이 권장됨
      setProperty의 property 값을 *로 설정

    useBean 액션 태그

    자바빈 객체를 생성하는데 사용하는 액션 태그

    <jsp:useBean id="beanName" class="beanClassName" scope="scope"/> 
    • id 속성: 생성될 자바빈 객체(인스턴스)의 이름을 지정, 필수 속성
    • class 속성: 객체가 생성될 자바빈 클래스명 기술
      패키지명을 포함한 자바 클래스의 풀네임 작성, 필수 속성
      import가 되는 것이기 때문에 JSP페이지의 page 디렉티브에서 따로 import 할 필요 없음
    • scope 속성: 자바빈 객체의 유효 범위로 자바빈 객체가 공유되는 범위 지정
      scope 속성 값으로 내장 객체 page, request, session, application 지정 가능
      생략 가능하며 생략시 기본값은 page

    setProperty 액션 태그

    자바빈 객체의 프로퍼티 값을 저장하기 위해 사용하는 액션 태그

    <jsp:setProperty name="beanName" property="propName" value="value"/>
    • name 속성: 자바빈 객체의 이름 지정, 필수 속성
    • property 속성: 프로퍼티 이름 지정, 필수 속성
      property 속성값을 *(애스테리스크)로 주면 모든 프로퍼티 값이 한 번에 저장됨
      form에서 넘어오는 파라미터의 이름, 개수가
      자바빈 프로퍼티의 이름, 개수와 정확히 일치해야 함
      → 액션 태그를 사용하는 결정적인 이유
    • value 속성: 프로퍼티에 저장할 값 지정, 생략 가능
      property 값이 *일 때도 생략
    • 자바빈 클래스의 Setter 메소드 호출

    getProperty 액션 태그

    자바빈 객체에 저장된 프로퍼티 값을 얻어낼 때 사용하는 액션 태그

    <jsp:getProperty name="beanName" property="propName"/>
    • name 속성: 자바빈 객체 이름 지정, 필수 속성
    • property 속성: 값을 얻어올 프로퍼티 이름 지정, 필수 속성
    • 자바빈 클래스의 Getter 메소드 호출

    예제

    ① form3.jsp에 데이터를 입력하고 bean3.jsp에서 변수에 저장
    ② 이름과 주소 데이터를 저장하고 반환하는 src/BeanDTO.java 자바빈 작성
    ③ bean3.jsp에서 자바빈 연동 액션 태그 사용


    form3.jsp

    데이터 입력 JSP 페이지

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <!-- 사용자로부터 데이터를 입력받는 form3.jsp -->
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>JavaBean 입력 폼</title>
    </head>
    <body>
     
    <!-- name값은 자바빈 클래스의 프로퍼티 이름과 동일해야 함 -->
    <form action="bean3.jsp" method="post">
        이름: <input type="text" name="name" /> <br />
        주소: <input type="text" name="addr" /> <br />
        <input type="submit" value="전송" />
    </form>
     
    </body>
    </html>
    http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

    bean3.jsp

    데이터 수신 후 액션 태그를 사용해서 자바빈과 연동

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <!-- useBean 태그의 class에서 BeanDTO와 연결되기 때문에 import 생략 가능 -->
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    <%
        // 한글 처리
        request.setCharacterEncoding("utf-8");
     
        String name = request.getParameter("name");
        String addr = request.getParameter("addr");
        System.out.println("name: " + name + ", addr: " + addr);
    %>
    </head>
    <body>
        <!-- useBean 액션 태그로 bd 객체 생성 -->
        <jsp:useBean id="bd" class="test.BeanDTO" scope="page" />
     
        <!-- setProperty 액션 태그로 bd 객체의 모든 프로퍼티에 값 저장 -->
        <jsp:setProperty name="bd" property="*"/>
     
        <%--
        위의 액션태그를 풀어쓰면 아래와 같음
        <jsp:setProperty name="bd" property="name" value="<%=name%>" />
        <jsp:setProperty name="bd" property="addr" value="<%=addr%>" />
        --%>
     
        <!-- getProperty 액션 태그로 bd 객체에 저장한 값 반환 -->
        <h2>
            이름: <jsp:getProperty name="bd" property="name" />
        </h2>
        <h2>
            주소: <jsp:getProperty name="bd" property="addr" />
        </h2>
     
        <!-- 표현식으로도 호출 가능 -->
        <b><%=bd.getAddr()%>의 <%=bd.getName() %>님 잘 오셨습니다.</b>
    </body>
    </html>
    http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

    src/BeanDTO.java

    BeanDTO 클래스가 작성되어 있는 파일

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    // 패키지 작성
    package test;
     
    // 클래스는 반드시 public 접근 제어자 사용
    public class BeanDTO {
     
        // property, 반드시 private 선언
        private String name;
        private String addr;
     
        // Setter, public 지정
        public void setName(String name) {
            this.name = name;
        }
     
        public void setAddr(String addr) {
            this.addr = addr;
        }
     
        // Getter, public 지정
        public String getName() {
            return name;
        }
     
        public String getAddr() {
            return addr;
        }
    }
    http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

    결과


    자바빈 클래스와 연동해서 사용하는 useBean, set/getProperty 액션 태그에 대해 살펴보았습니다.

    자바빈 작성법은 동일하고 전체적인 구조도 유사하지만 자바빈 객체에 많은 양의 데이터를 저장하는 경우에는

    자바빈 연동 액션 태그를 사용하는 것이 권장됩니다.

    그것은 setProperty 액션 태그 때문인데 해당 액션 태그의 property 값에 *을 지정하면
    자바빈 객체의 모든 프로퍼티에 그에 맞는 데이터가 저장돼서 훨씬 편리하게 데이터를 저장할 수 있게됩니다.

    단, input 태그 name 속성의 값, 개수와
    자바빈 클래스의 프로퍼티 이름, 개수가 반드시 일치해야 한다는 점을 기억해야 하겠습니다.

    'JAVA > JSP' 카테고리의 다른 글

    JSP | Session  (0) 2020.02.22
    JSP | Cookie  (0) 2020.02.22
    JSP | JavaBean 자바빈  (0) 2020.02.20
    JSP | Template Page  (0) 2020.02.20
    JSP | forward 액션 태그  (1) 2020.02.19

    댓글

Designed by Tistory.