자바 중급 (JAVA-Web) 강좌 자료] 커스텀 태그라이브러리의 구성(TLD)

 

자바 중급 (JAVA-Web) 강좌 자료] 커스텀 태그라이브러리의 구성(TLD)

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

커스텀 태그라이브러리의 구성(TLD)

 

TLD 파일은 XML 문서의 형식이다.

확장자는 TLD

● 크게 4가지로 구성되어 있다.

  - TLD 문서의 전체 설정

  - 태그라이브러리의 전체 설정

  - 커스텀 태그의 전체 설정

  - 커스텀 태그의 인자 설정

자바 중급 (JAVA-Web) 강좌 자료] 커스텀 태그라이브러리의 동작

 

자바 중급 (JAVA-Web) 강좌 자료] 커스텀 태그라이브러리의 동작

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

커스텀 태그라이브러리의 동작

 

커스텀태그의 수행은 실제 자바클래스가 담당한다. 커스텀태그를 만든 다는 것은 원하는 기능의 자바클래스를 설계하는 것이다. 이러한 자바클래스를 Custom Tag Handler라고 한다. 

기본동작

  - JSP에서 태그라이브러리를 사용 할려면 이를 JSP Container에게 알려야 하는데 taglib 지시자를 이용한다.

  - <%@ taglib uri=“/WEB-INF/sample.tld     prefix=“jclee” %>

        uri : 해당 커스텀태그 라이브러리에 대한 위치를 알린다.

        prefix : 사용할 태그라이브러리의 이름을 가리킨다. 접두사

  - JSP콘테이너는 JSP페이지를 읽고 서블릿으로 변환 할 때 taglib지시자를 만나며 이때 .tld  파일이 로드 되었는지 확인하며 만약 로드 되지 않았다면 로드하고, 이미 로드 되었다면 넘어간다.

커스텀 태그 라이브러리는 TLD(Tag Library Descriptor)Custom Tag Handler로 구분 할 수 있다.

TLD 파일은 JSP 컨테이너가  taglib 지시자를 만났을 때 제일 먼저 찾는 파일이다. 이 파일에는 커스텀 태그에 관한 간략한 정보들이 들어있다. TLD 파일은 JSP서블릿으로 컴파일 할 때 커스텀 태그가 올바른 것인지 , 사용 문법에 맞는지 등을 검사 할 때 이용되는 파일이다.

태그의 요청이 있다면 핸들러의 작업을 담당하는 자바클래스가 JVM에 로드 되어 수행된다. 물론 로드 된 클래스는 공유가 가능하다. 매 요청마다 일일이 인스턴스를 만드는 것은 아니며 공유하여 사용한다.

보통 커스텀 태그 라이브러리는 JAR 압축파일로 이루어져 있으며 이 파일은 태그 핸들러를 구성하는 자바클래스와 수행되는 태그들의 간단한 정보와 목록이 있는 TLD 파일로 구성되어 있다.

 

자바 중급 (JAVA-Web) 강좌 자료] 커스텀 태그(Custom Tag) 특징

 

자바 중급 (JAVA-Web) 강좌 자료] 커스텀 태그(Custom Tag) 특징

 

 

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

커스텀 태그(Custom Tag) 특징


 

자바코드 없는 JSP 페이지를 만들 수 있다.

● 기존태그로 처리 할 때의 복잡함을 단순화 시킬 수 있다.

  - 기존에 존재하는 HTML 태그들을 합쳐서 하나의 새로운 태그로 만들 수 있다.

  - 다음의 경우를 보자.

       <table>

  <tr><td>학생</td><td>국어</td>수학</td></tr>

   <tr><td>이종철</td><td>100</td>98</td></tr>

    </table>

     위의 태그를 태그라이브러리를 이용하면 다음과 같이 사용 가능 하다.

     <jclee:table row=“2” column=“3”>

  학생;국어;수학:

  이종철;100;99

    </jclee:table>

 

재활용이 가능 하다.

  - 커스텀 태그 라이브러리는 .jar 형태로 압축되어 사용 될 수 있는데 일종의 package로 묶어 활용 할 수 있다는 의미이다. 즉 배포가 가능하다.

유지보수가 용이하다.

자바 API를 그대로 활용 할 수 있다.

  - 메일 기능을 이용 하기 위해서는 JavaMail을 이용하면 되고 , DB연동을 위해서는 JDBC를 이용하면 된다.

 

자바 중급 (JAVA-Web) 강좌 자료] 커스텀 태그(Custom Tag)란?

 

자바 중급 (JAVA-Web) 강좌 자료] 커스텀 태그(Custom Tag)란?

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다. 

 

커스텀 태그(Custom Tag)란?

 

사용자가 정의해서 사용하는 태그

● 특징

     - 반복적인 일을 단순하게 만든다.

     - 표현영역과 연산영역을 분리 시킨다.

     - 일관성 있는 웹 페이지의 구성이 가능

     - 재사용

● 일반적인 빈에 비해 태그들은 좀더 풍부한 실행시점 프로토콜을 가진다.

    - 초기화 과정에서 태그의 실행에 꼭 필요한 속성을 설정해야 하는 경우가 있다. 이는 빈의 생성자에 대비

    - JSP안에서 빈들이 가지는 문맥은 Web Application의 요구에 그리 적합하지 않다. 빈 내부에서는 paceContext등의 기본 개념이 없다.

JSP엔진이 하나의 태그를 읽으면 그에 해당하는 Action을 시작하고 (태그 인스턴스 생성) pageContext 객체를 태그 객체에 넘겨준다.

자바 중급 (JAVA-Web) 강좌 자료] 태그확장(Tag Extension)

 

자바 중급 (JAVA-Web) 강좌 자료] 태그확장(Tag Extension)

 

 


실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

 

태그확장(Tag Extension)

 

JSP Code의 문제

    - HTML과 자바코드의 혼재

      (서블릿 유지보수보다 JSP유지 보수가 더 어려울 수

      있다.)

    - 표현과 로직의 정확한 분리어려움

      (웹 개발자와 디자이너와의 명확한 역할분담 어려움)

● 이러한 문제의 해결위해 최대한 HTML/XML등과 가까운 템플릿 메커니즘이 필요

● 결국 이상의 이유로 JSP1.1에서 Tag Extension이 도입

JavaBean을 사용하기 위한 태그의 종류는 한계가 있으며, 그러한 태그들로는 JavaBeanProperty(속성)에만 접근이 가능하며 세밀한 초기화나 조작 등이 필요한 경우에는 스크립틀릿 안에서 메소드를 호출해야 한다.

커스텀 태그 라이브러리는 JSP페이지에서 자바코드를 직접 이용하지 않고 사용 할 수 있도록 하는 기술

자바 빈즈를 이용하여 자바코드를 JSP에서 분리 할 수도 있겠지만 자바 빈즈는 독립적으로 실행 될 수 있는 Component이기에 이를 그대로 JSP페이지에서 사용 하기 위해서는 특별한 장치가 필요한데 이것이 곧 태그라이브러리이다.

 

 

자바 중급 (JAVA-Web) 강좌 자료] Java Bean Example

 

자바 중급 (JAVA-Web) 강좌 자료] Java Bean Example

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

Java Bean Example

 

/**  이 빈은 문자열을 뒤집거나 철자검사등을 한다.(SpellCheck.java)  */
public class SpellCheck {
  private String word;
  public SpellCheck() {}
  // 문자열을 뒤집는 메소드
  public String reverse() {
    return (new StringBuffer(word).reverse()).toString();
  }
  //철자검사 : 그냥 true를 넘기자
  public boolean check() {      return true;   }
  //word 속성에 대한 접근 메소드
  public String getWord() {
    return word;
  }
  //word 속성의 값을 설정
  public void setWord(String myWord) {
    word = myWord;
  }
}
<!– SpellCheck.html à
<html>
<head>
<title> SpellCheck </title>
</head>
<body>
<form action=/jsp/SpellCheck.jsp method=post>
Enter word : <input type=text name=word>
<select name=mode>
 <option value=1 selected>Reverse</option>
<option value=2 >SpellCheck</option>
</select>
<input type=submit value=submit>
</body>
</html>
<!– SpellCheck.jsp à
<jsp:useBean id="help" scope="request" class="SpellCheck" />
<jsp:setProperty name="help" property="*" />
<html>
<body>
you enter the input , <b>
<jsp:getProperty name="help" property="word" /> </b><br>
The processed output is : <br>
<%= Integer.parseInt(request.getParameter("mode")) == 1 ? help.reverse() : "“
+help.check() %>
</body>
</html>

자바 중급 (JAVA-Web) 강좌 자료] <jsp:setProperty> 사용 예

 

자바 중급 (JAVA-Web) 강좌 자료] <jsp:setProperty> 사용 예

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

 

 

<jsp:setProperty> 사용 예

 

* <jsp:setProperty name=“myBean” property=“name” value=“홍길동” />

   <jsp:useBean에서 정의된 이름이 myBeanJavaBean에서 자바빈의 변수(프로퍼티)중 이름이 name인 변수의 값을 “홍길동”로 set

* <jsp:setProperty name=“myBean” property=“name” param=“pass” />

   <jsp:useBean에서 정의된 이름이 myBeanJavaBean에서 자바빈의 변수(프로퍼티)중 이름이 name인 변수의 값을 request.getPArameter(“pass”)의 값으로 set

 

자바 중급 (JAVA-Web) 강좌 자료] <jsp:useBean> 사용 예

 

자바 중급 (JAVA-Web) 강좌 자료] <jsp:useBean> 사용 예

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다. 

 

 

<jsp:useBean> 사용 예

 

 

* <jsp:useBean id=“myBean” class=“package.Class”/>

   - package.Class타입의 클래스를 myBean이라는 이름으로 초기화 한다는 의미이며 다음과 같은 것이다. Package.Class myBean = new package.Class()

* <jsp:useBean id=“myBean” class=“package.Class” type=“MyType”/>

   - package.Class타입의 클래스를 myBean이라는 이름으로 초기화 한다는 의미인데 그 Class의 타입이 MyType이라는 의미이다. 

    MyType myBean = new package.Class() 그러므로 형 변환을 시도하며 오류가 발생하면 ClassCastException 이 발생된다

+ Recent posts