JSP -10

김정현·2024년 6월 18일
0

JSP

목록 보기
11/13

커스텀 액션

커스텀 액션 만들기

1) 태그 파일을 작성해서 만드는 방법
확장자 .tag

<%@ taglib prefix=".." tagdir="경로" %>

2) 태그 클래스를 작성해서 만드는 방법

  1. 태그파일을 이용해서 커스텀 액션 만들기
    1) tag 지시자는 태그 파일에만 사용할 수 있는 지시자인데, 웹 컨테이너가 태그 파일을 처리할 때 필요한 여러가지 정보를 기술하는 역할을 합니다.
    2) tag 지시자는 page 지시자와 마찬가지로 <%@으로 시작해서 %>로 끝나야 합니다. 그리고 <%@ 바로 다음에는 지시자의 종류를 표시하는 tag라는 이름이 와야 합니다.
    3) 여러가지 정보를 이름="값" 또는 이름='값' 형태로 기술할 수 있습니다. 즉, 애트리뷰트 형태로 기술할 수 있습니다.

3. 태그 파일에서 사용할 수 있는 지시어

1) tag 지시자

-page 지시자와 유사, 태그의 정보 정의

  • body-content

    :empty - 단일 태그 형태로 사용하는 경우, 예) <util:line/>
    :scriptless - 여는 태그, 닫는 태그
    EL식 사용가능, 다른 태그 사용 가능 ...
    :tagdependent - 여는 태그, 닫는 태그, 태그 안쪽 내용물은 모두 문자로 해석 (자바 코드, EL식, 다른 태그 모두 사용 불가 - 해석이 그냥 문자로 해석)

-pageEncoding: 태그 인코딩 설정
-import: 자바 패키지 추가
-trimDirectiveWhitespaces: true - 태그 앞 뒤 공백을 제거 출력

2) include 지시자

<%@ include file="파일 경로" %>

3) taglib 지시자

:태그 파일 내에서도 다른 태그 라이브러리 기능 사용 가능

4) attribute 지시자

<%@ attribute name="속성명" %>

사용자 입력 값에 따라 tag 지역변수 생성 후 변경

속성명으로 지역 변수 생성
속성명으로 EL식 속성 추가

type: 자료형(기본값 - java.lang.String)
기본 자료형은 그냥 그래도 사용 X, 래퍼 클래스 형태로만 설정
(int -> java.lang.Integer)

//태그에서

<%@ tag body-content="empty" pageEncoding="UTF-8" trimDirectiveWhitespaces="true" %>
<%@ attribute name="color" %>
<%@ attribute name="size" type="java.lang.Integer" %>
<%--<%=color%>--%>
<%--${color}--%>
<div style="color: ${color};">
<%
    for (int i = 0; i < size; i++) {
        out.write("-");
    }
%>
</div>

//jsp에서

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="util" tagdir="/WEB-INF/tags/utils" %>
<util:line color="blue" size="30"/>
<util:line color="orange" size="100"/>
  • required: false(기본값) - 없어도 될때

5) variable 지시자

  1. 한글을 포함하는 태그 파일
  2. 애트리뷰트(속성)를 지원하는 태그 파일
  3. 태그 파일의 내장 변수
  4. 동적 애트리뷰트를 지원하는 태그 파일
  • dynamic-attributes
  1. 커스텀 액션의 본체를 처리하는 태그 파일
    -body-content : scriptless | tagdependent
    -<jsp:doBody /> : 태그 안쪽 내용물 출력

  2. 변수를 지원하는 커스텀 액션
    @variable: 변수
    예) <c:set var="변수명" value="..." />

1) name-given : 속성명 - EL식 변수
2) variable-class : EL식 변수의 자료형, 문자(java.lang.String - 기본값)

3) scope
- NESTED : 여는태그, 닫는태그 형식, 태그 내부에서 EL식 변수를 접근
- AT_BEGIN : 여는 태그 바로 아래쪽에서 접근
- AT_END : 주로 단일 태그에서 많이 사용하고, 닫는 태그 아래 쪽에서 접근 가능

  1. 커스텀 액션의 본체 안에서 변수를 사용하는 예
    1) name-from-attribute
    2) alias
  • 변수명 속성의 필수 조건
    -name 속성이 [var]이며 그 값은 name-from-attribute의 값인)
    -반드시 java.lang.String 타입이어야 하고, -"required"여야 하며,
    -"rtexprvalue"는 false - 변수 값으로 EL식 속성, 자바 코드 지정 불가
    예) value="${num}" (X) | value="<%new Date()%>"(X)

//jsp에서

<%@ tag body-content="empty" %>
<%@ tag pageEncoding="UTF-8" trimDirectiveWhitespaces="true" %>
<%@ taglib prefix="c" uri="jakarta.tags.core" %>
<%@ attribute name="num1" type="java.lang.Integer" required="true" %>
<%@ attribute name="num2" type="java.lang.Integer" required="true" %>
<%@ attribute name="var" required="true" rtexprvalue="false" %>
<%@ variable name-from-attribute="var" alias="minimum" variable-class="java.lang.Integer" scope="AT_END" %>
<%
    int min = num1 > num2 ? num2 : num1;
%>

<c:set var="minimum" value="<%=min%>" />

//예제에서

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="jakarta.tags.core" %>
<%@ taglib prefix="util" tagdir="/WEB-INF/tags/utils" %>
<util:min var="min" num1="100" num2="200" />
${min}

<c:forEach var="item" items=...">{...}">{item}
</c:forEach>

  1. 커스텀 액션 태그를 이용하여 레이아웃 구성하기

0개의 댓글