개발/JSP

JSP 액션태그

함수형 인간 2025. 3. 8. 21:33

JSP 액션 태그: XML 형식의 태그로, JSP 컨테이너가 특정 동작을 수행하도록 지시.

  • <jsp:useBean>: JavaBean 객체를 생성하거나 가져옴.
  • <jsp:setProperty>: JavaBean 객체의 속성 값을 설정.
  • <jsp:getProperty>: JavaBean 객체의 속성 값을 가져옴.
  • <jsp:include>: 다른 페이지(JSP 또는 정적 컨텐츠)를 현재 페이지에 동적으로 포함.
  • <jsp:param>: <jsp:include>, <jsp:forward> 등에서 파라미터를 전달.
  • <jsp:forward>: 다른 페이지로 요청을 전달(포워딩).

1. <jsp:useBean>

  • JavaBean 객체를 생성하거나 이미 생성된 객체를 찾아서 사용.
  • 주요 속성:
    • id: JavaBean 객체를 참조할 때 사용할 변수 이름 (필수)
    • class: JavaBean 클래스의 fully-qualified name (패키지명 포함) (필수)
    • scope: JavaBean 객체가 저장될 영역 (page, request, session, application, 기본값: page)
    • type: 변수의 타입. class와 함께 사용될 때는, class가 인터페이스이거나 추상클래스인 경우 실제 구현 클래스를 지정.
  • 동작 방식:
    1. 지정된 scope에서 id에 해당하는 JavaBean 객체를 찾음.
    2. 객체가 존재하면 해당 객체를 사용.
    3. 객체가 존재하지 않으면, class 속성에 지정된 클래스의 인스턴스를 생성하고 지정된 scope에 저장.
  • 예시:
Java
 
<jsp:useBean id="person" class="com.example.Person" scope="request" />
<%-- 또는 --%>
<jsp:useBean id="myList" class="java.util.ArrayList" scope="session" type="java.util.List" />

2. <jsp:setProperty>

  • JavaBean 객체의 프로퍼티(property) 값을 설정. (setter 메서드 호출)
  • 주요 속성:
    • name: <jsp:useBean>으로 정의한 JavaBean 객체의 id (필수)
    • property: 값을 설정할 프로퍼티 이름 (필수)
    • value: 설정할 프로퍼티 값 (정적 값 또는 EL 표현식)
    • param: 요청 파라미터의 이름을 지정하여 값을 가져옴. value와 함께 사용할 수 없음.
  • 예시:
Java
 
<jsp:useBean id="user" class="com.example.User" />

<jsp:setProperty name="user" property="name" value="홍길동" />
<jsp:setProperty name="user" property="age" value="${param.userAge}" />
<jsp:setProperty name="user" property="email" param="userEmail" />

<%-- 모든 프로퍼티를 요청 파라미터에서 자동으로 설정 (프로퍼티 이름과 파라미터 이름이 같아야 함) --%>
<jsp:setProperty name="user" property="*" />

3. <jsp:getProperty>

  • JavaBean 객체의 프로퍼티 값을 가져와 출력. (getter 메서드 호출)
  • 주요 속성:
    • name: <jsp:useBean>으로 정의한 JavaBean 객체의 id (필수)
    • property: 값을 가져올 프로퍼티 이름 (필수)
  • <%= ... %> 표현식과 동일하게, 가져온 값을 출력 스트림에 쓴다.
  • 예시:
Java
 
<jsp:useBean id="product" class="com.example.Product" />
<jsp:setProperty name="product" property="name" value="Awesome Gadget" />

<p>Product Name: <jsp:getProperty name="product" property="name" /></p>
<%-- 위 코드는 아래 코드와 동일 --%>
<p>Product Name: <%= product.getName() %></p>

4. <jsp:include>

  • 다른 JSP 페이지나 정적 파일의 실행 결과를 현재 페이지에 동적으로 포함. (런타임 포함)
  • 주요 속성:
    • page: 포함할 페이지의 URL (필수)
    • flush: 포함하기 전에 현재 페이지의 출력 버퍼를 flush할지 여부 (true/false, 기본값: false)
  • 포함되는 페이지는 별도로 실행되며, request, response 객체를 공유합니다. 변수는 공유되지 않는다.
  • 예시:
Java
 
<jsp:include page="navigation.jsp" />
<jsp:include page="article.jsp" flush="true" />

<jsp:param> (include와 함께 사용):

  • <jsp:include>로 포함되는 페이지에 파라미터를 전달
  • 주요 속성:
    • name: 파라미터 이름
    • value: 파라미터 값
  • 예시:
Java
 
<jsp:include page="productDetails.jsp">
  <jsp:param name="productId" value="123" />
</jsp:include>

 

5. <jsp:forward>

  • 현재 페이지의 처리를 중단하고, 지정된 다른 페이지로 요청을 전달. (제어권을 완전히 넘김)
  • 주요 속성:
    • page: 포워딩할 페이지의 URL (필수)
  • 브라우저의 주소 표시줄은 변경되지 않는다. (서버 내부에서 이동)
  • 예시:
Java
 
<jsp:forward page="/loginSuccess.jsp" />

<jsp:forward page="errorPage.jsp">
    <jsp:param name="errorMessage" value="Invalid input"/>
</jsp:forward>

  • <jsp:param> (forward와 함께 사용):
    • <jsp:forward>로 전달되는 페이지에 파라미터를 추가.