ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JSP/Servlet] 커스텀 액션 만들기2 - 태그 파일 이용(1/2)
    IT/Spring-JSP&Servlet 2020. 11. 23. 00:30

    출처 : unsplash

     

    ■ 들어가기

    - 뇌를 자극하는 JSP&Servlet (김윤명/한빛미디어). 을 공부하며 정리하는 블로그


    ■ 목차

    0. 들어가기 전에

    1. 아주 간단한 태그 파일

    2. 애트리뷰트를 지원하는 태그 파일

    3. 동적 애트리뷰트를 지원하는 태그 파일

     

     

    0. 들어가기 전에

    - 태그 파일의 문법은 JSP 페이지의 문법과 거의 동일함

    - 파일의 구조가 HTML 코드를 중심으로 이루어지며

    - HTML의 앞과 뒤, 사이사이에 지시자, 스크립팅 요소, 익스프레션 언어, 액션이 들어갈 수 있음
    - HTML : 웹 브라우저에 그대로 출력
    - 스크립팅 요소, 익스프레션 언어, 액션 : 웹 컨테이너에 의해 실행
    - 지시자 : 웹 컨테이너가 태그 파일을 태그 클래스로 변환할 때 사용

     

    1. 아주 간단한 태그 파일

    - 태그 파일을 이용해서 커스텀 액션을 만들면, 그 커스텀 액션은 기본적으로 본체를 가진다.
    - 본체(body)란, 시작 ~ 끝 태그 사이에 오는 부분을 지칭
      ex. <util:box>야유회가 취소되었습니다.</util:box>
    - 만일 본체를 가지지 않는 경우 "tag 지시자"를 사용해서 에러 발생하도록 만들어야 함

     

    1) tag 지시자

    - 사용법 : page 지시자와 마찬가지로 <%@로 시작해서 %>로 끝난다.
    - 여러 가지 정보를 이름="값" 또는 이름='값' 형태로 기술 (애트리뷰트 형태)
    - 커스텀 액션이 본체를 가지지 않도록 만들기 위해서는 body-content 애트리뷰트에 "empty" 값을 지정
      ex. <%@tag body-content="empty" %>
    - 태그 파일에 사용가능한 지시자 (표)

    이름 역할
    tag 지시자 웹 컨테이너가 태그 파일을 처리할 때 필요한 정보를 기술
    include 지시자 다른 태그 파일을 포함
    taglib 지시자 태그 파일에서 사용할 다른 커스텀 액션의 태그 라이브러리(tag library)에 대한 정보를 기술
    attribute 지시자 커스텀 액션의 애트리뷰트에 대한 정보를 기술
    variable 지시자 커스텀 액션의 변수에 대한 정보를 기술

     

    2) 설치 방법

    - 웹 애플리케이션의 WEB-INF\tags 디렉토리에 저장
    - 확장자 : 태그 파일 이름은 반드시 .tag 확장자를 갖도록 만들어야 함 (웹 컨테이너가 태그 파일을 자동 인식하기 위함)
    - 파일명 : 커스텀 액션의 태그 이름으로 작성

      ex. <util:line /> 라는 커스텀 액션을 만들기 위해서는 "line.tag" 라는 파일명으로 지정 필요!

     

    3) 사용하기

    - JSTL 라이브러리 사용하기 위해 taglib 지시자 사용한 것과 동일
    - 다만, uri 애트리뷰트를 사용한 것과 달리 tagdir 애트리뷰트를 사용해서 태그 파일이 있는 경로명 지정
      ex. <%@taglib prefix="util" tagdir="/WEB-INF/tags" %>

     

    [참고] 한글을 포함하는 태그 파일

    - tag 지시자에 pageEncoding="utf-8" 작성
      ex. <%@tag pageEncoding="utf-8" %>

     

     

    2. 애트리뷰트를 지원하는 태그 파일

    1) attribute 지시자

    - 사용법 : <%@로 시작하고 %>로 끝난다.
    - 추가하고자 하는 애트리뷰트에 대한 여러 가지 정보를 이름="값" 또는 이름='값' 형태로 기술
      ex. 목적: color 애트리뷰트 생성
           <%@attribute name="color" %>
    - 태그 파일에 attribute 지시자가 있으면 커스텀 액션의 color 애트리뷰트 값은 태그 파일로 전송되며,

      태그 파일에서는 전달된 값을 이용해서 필요한 처리를 수행 (문자열 타입으로 전달됨)

     

    2) 태그 파일로 전달된 애트리뷰트 값 사용하는 방법

    - 방법1 : 스크립팅 요소 안에서 자바 변수처럼 사용
      ex. <%= color %>
    - 방법2 : 익스프레션 언어의 EL식 안에서 데이터 이름으로 사용 가능
      ex. ${color}


    [주의] 태그 파일에 애트리뷰트 값이 전달

    - "문자열" 타입으로 전달되기 때문에 다른 타입으로 사용하기 위해서는 전달될 타입을 지정해야 하며, type 애트리뷰트를 작성

    ex. <%@attribute name="size" type="java.lang.Integer" %>

    - 필수 애트리뷰트로 지정하기 위해서는 attribute 지시자에 required 애트리뷰트 추가하고 값으로 "true" 지정
      ex. <%@attribute name="size" type="java.lang.Integer" required="true" %>

     

     

    3. 동적 애트리뷰트를 지원하는 태그 파일

    - 동적 애트리뷰트는 필요치 않은 애트리뷰트가 사용되더라도 문법 에러가 발생하지 않음
    - 개발자 혹은 웹 디자이너가 커스텀 액션을 잘 모르고 사용하더라도 정상 수행될 수 있음
    => 개인적으로는 잘못 사용할 경우 에러를 발생하는게 낫다고 본다.
    - 사용법 : tag 지시자에 dynamic-attribute 애트리뷰트에 대표 이름을 기재

    댓글

Designed by Tistory.