<useBean> 태그

현서·2025년 6월 14일
1

자바

목록 보기
31/32

<useBean> 태그

JSP(JavaServer Pages)에서 사용하는 액션 태그(Action Tag) 중 하나.
자바빈(JavaBean) 객체를 JSP 페이지 내에서 사용할 수 있도록 생성하거나 불러오는 역할을 한다.

기본 문법

<jsp:useBean id="beanName" class="패키지.클래스명" scope="page|request|session|application" />
속성설명
idJSP에서 사용할 JavaBean의 이름.
class사용할 JavaBean의 전체 클래스 이름(패키지 포함).
scope해당 Bean의 유효 범위를 지정한다. 기본값은 page.
- page: 현재 페이지에서만 사용
- request: 하나의 요청(request) 범위
- session: 한 세션 동안 유지
- application: 애플리케이션 전체에서 공유
<jsp:useBean id="user" class="com.example.User" scope="session" />
<jsp:setProperty name="user" property="name" value="홍길동" />
<jsp:getProperty name="user" property="name" />
  • com.example.User 클래스의 인스턴스를 user라는 이름으로 생성 (이미 세션에 있으면 재사용)
  • user 객체의 name 속성에 "홍길동"을 저장
  • user.name을 출력
태그역할
<jsp:useBean>자바빈을 생성하거나 참조한다.
<jsp:setProperty>자바빈의 필드 값을 설정한다.
<jsp:getProperty>자바빈의 필드 값을 가져와 출력한다.

mvc1 프로젝트의 이 부분을 useBeans 액션태그로 바꾸면,

<c:when test="${action eq 'join'}">
        <%
            // useBeans 액션태그
            dto.setUserid(request.getParameter("userid"));
            dto.setUserpw(request.getParameter("userpw"));
            dto.setName(request.getParameter("name"));
            dto.setHp(request.getParameter("hp"));
            dto.setEmail(request.getParameter("email"));
            dto.setGender(request.getParameter("gender"));
            dto.setSsn1(request.getParameter("ssn1"));
            dto.setSsn2(request.getParameter("ssn2"));
            dto.setZipcode(request.getParameter("zipcode"));
            dto.setAddress1(request.getParameter("address1"));
            dto.setAddress2(request.getParameter("address2"));
            dto.setAddress3(request.getParameter("address3"));
            boolean success = dao.insertMember(dto);
            request.setAttribute("success", success);
        %>
        <c:choose>
            <c:when test="${success}">
                <h2>회원가입 성공</h2>
                <p><a href="login.jsp">로그인</a></p>
            </c:when>
            <c:otherwise>
                <h2>회원가입 실패</h2>
                <p><a href="join.jsp">회원가입</a></p>
            </c:otherwise>
        </c:choose>
    </c:when>

아래와 같이 바꿀 수 있다고 한다.

<c:when test="${action eq 'join'}">

    <!-- 1. DTO 객체 생성 -->
    <jsp:useBean id="dto" class="your.package.MemberDTO" scope="page" />

    <!-- 2. 폼 데이터 자동 주입 -->
    <jsp:setProperty name="dto" property="*" />

    <!-- 3. DAO 객체 생성 -->
    <jsp:useBean id="dao" class="your.package.MemberDAO" scope="page" />

    <%
        // 4. 실제 DB 처리
        boolean success = dao.insertMember(dto);
        request.setAttribute("success", success);
    %>

    <!-- 5. 처리 결과 출력 -->
    <c:choose>
        <c:when test="${success}">
            <h2>회원가입 성공</h2>
            <p><a href="login.jsp">로그인</a></p>
        </c:when>
        <c:otherwise>
            <h2>회원가입 실패</h2>
            <p><a href="join.jsp">회원가입</a></p>
        </c:otherwise>
    </c:choose>
</c:when>
태그설명
<jsp:useBean>자바 클래스를 JSP 내에서 객체로 생성
<jsp:setProperty name="dto" property="*"/>폼에서 전송된 request 파라미터들을 자동으로 dto의 필드에 주입합니다. 이름이 일치해야 합니다.
request.setAttribute("success", success);JSTL에서 사용할 수 있도록 success를 request scope에 저장

주의 사항

  • DTO 클래스(MemberDTO)는 getter/setter가 잘 정의되어 있어야 한다.

  • <jsp:setProperty property="*"/><input name="..."> 값과 DTO의 필드 이름이 일치할 때만 동작한다.

  • DAO와 DTO의 패키지 경로 정확히 작성해야 한다. (예: com.example.model.MemberDTO)

profile
The light shines in the darkness.

0개의 댓글