1. 자바빈이란?


  • JSP 페이지의 디자인과 로직을 분리시키기 위해서 나온 자바 클래스의 설계 규약, 즉 표준이다.

  • DTO(Data Transfer Object)나 DAO(Data Access Object)클래스의 객체를 JSP페이지에서 사용할 수 있게 해준다.

  • 아래는 자바빈 규약을 따르는 클래스 구조의 예시이다.

import java.util.Date;

public class MemberInfo {

    private String id;
    private String pw;
    private String name;
    private Date registerDate;
    private String email;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPw() {
        return pw;
    }

    public void setPw(String pw) {
        this.pw = pw;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getRegisterDate() {
        return registerDate;
    }

    public void setRegisterDate(Date registerDate) {
        this.registerDate = registerDate;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

}
  • 자바빈은 자바빈 규약을 따르는 클래스 자체를 가르키는 말이기도 하다.

  • JSP 기준에서 데이터를 프로퍼티라 부르고 이는 자바빈의 필드에 해당한다.

  • 자바빈을 위한 클래스를 컴파일하여 애플리케이션 폴더의 WEB-INF/classes 하위 루트에 저장해두면 JSP에서 자바빈을 사용할 수 있게 된다.


2. jsp:useBean 액션태그를 통한 자바빈 객체 생성


  • <jsp:useBean> 액션태그를 통한 자바빈 객체 생성
    • id : 자바빈 객체에 접근할 때 사용할 이름. 스크립트에서 객체에 접근하기 위한 변수명으로 사용된다.
    • class : 자바빈 객체를 만들 자바빈 클래스 이름(패키지명을 포함한 풀네임)
    • scope : 자바빈 객체에 접근할 수 있는 범위(page, request, session, application 중 하나)
      • scope의 기본값은 page이다.
<jsp:useBean id="빈 이름" class="자바빈 클래스명" scope="범위" />
<jsp:useBean id="info" class="chap08.member.MemberInfo" scope="request" />
  • 위에서 예시로 든 useBean 태그는 아래의 자바 코드를 실행한 것과 같다.
MemberInfo info = (MemberInfo) request.getAttribute("info");
if(info == null) {
    info = new MemberInfo();
    request.setAttribute("info", info);
}
  • 해당 영역에 객체가 이미 있으면 자바빈 객체를 새로 생성하지 않고 기존의 것을 사용한다.

2. jsp:setPropertyjsp:getProperty 액션 태그


  • setProperty 액션태그는 자바빈의 프로퍼티 값을 설정한다.
    • name: 자바빈 객체 이름. useBean 태그에서 id로 설정한 값이다.
    • property: 값을 지정할 프로퍼티 이름
    • value: 프로퍼티의 값
<jsp:setProperty name="자바빈" property="변경할 속성이름" value="값" />

  • value 대신 param을 사용할 수 있다.
    • 요청 파라미터로 온 값을 대입한다.
<jsp:setProperty name="자바빈" property="변경할 속성이름" param="파라미터 이름" />

  • property 속성값을 *로 지정할 수 있다.
    • 각각의 프로퍼티 이름에 매칭되는 파라미터가 존재하면 알아서 값을 저장해준다.
<jsp:setProperty name="자바빈" property="*" />

  • getProperty 액션태그는 자바빈의 프로퍼티 값을 읽을 때 사용한다.
<jsp:getProperty name="자바빈" property="읽을 프로퍼티 이름" />

3. 회원가입 예시


  • 회원가입 입력 폼
<%@ page contentType="text/html; charset=utf-8" %>


<!DOCTYPE html>
<html>
<head>
    <title>회원가입 입력 폼</title>
</head>
<body>
    <form action="/chap08/processJoining.jsp" method="post">
        <table border="1" cellpadding="0" cellspacing="0">
            <tr>
                <td>아이디</td>
                <td colspan="3"><input type="text" name="id" size="10"></td>
            </tr>
            <tr>
                <td>이름</td>
                <td><input type="text" name="name" size="10"></td>
                <td>이메일</td>
                <td><input type="text" name="email" size="10"></td>
            </tr>
            <tr>
                <td colspan="4" align="center">
                    <input type="submit" name="회원가입">
                </td>
            </tr>
        </table>
    </form>
</body>
</html>

  • 입력 정보 출력
<%@ page contentType="text/html; charset=utf-8" %>
<% request.setCharacterEncoding("utf-8"); %>

<jsp:useBean id="member" class="chap08.member.MemberInfo" scope="request" />
<jsp:setProperty name="member" property="*" />
<jsp:setProperty name="member" property="pw" value="<%= member.getId() %>" />
<jsp:setProperty name="member" property="registerDate" value="<%= new java.util.Date() %>" />

<!DOCTYPE html>
<html>
<head>
    <title>회원 정보 출력</title>
</head>
<body>
    이름: <jsp:getProperty name="member" property="name" />
    id:  <jsp:getProperty name="member" property="id" />
    email: <jsp:getProperty name="member" property="email" />
    pw: <jsp:getProperty name="member" property="pw" />
    등록일: <jsp:getProperty name="member" property="registerDate" />

</body>
</html>

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

12. 세션(Session)  (0) 2020.07.19
11. 쿠키(Cookie)  (0) 2020.07.19
9. <jsp:forward> 액션 태그  (0) 2020.07.19
8. include 디렉티브  (0) 2020.07.19
7. <jsp:include> 태그  (0) 2020.07.19

+ Recent posts