자바의 정적 메서드들을 EL함수로 TLD에 등록하는 방법에 대해 알아보도록 할게요!
TLD란 Tag Library Descriptor로 태그 라이브러리 정보의 기술을 의미합니다.
우선 흐름을 얘기하자면
1. .tld 확장자를 갖는 TLD 파일에 정적 메서드를 등록을 하고
2. web.xml에 등록합니다.
3. 등록된 것을 토대로 jsp 페이지에서 호출을 하여 메서드를 이용 할 수 있습니다.
우선 TLD파일을 등록하는 방법에 대해서 설명 드리겠습니다.
태그의 루트 엘리먼트는 <taglib>가 되어야 합니다.
그 안에 <tlib-version>과 <short-name>의 두 엘리먼트를 필수적으로 등록을 해야합니다.
즉,
math-functions.tld 파일
<taglib>
<tlib-version>1.0</tlib-version>
<short-name>math</short-name>
<taglib>
<taglib xmlns="http://java.sun.com/xml/ns/javaee" version="2.1">
<tlib-version>1.0</tlib-version>
<short-name>math</short-name>
<taglib>
이제 저렇게 형식을 써놓구 EL함수를 등록하려면
<function> 태그에 <name>, <function-class>, <function-signature>를 등록해줍니다.
<taglib xmlns="http://java.sun.com/xml/ns/javaee" version="2.1">
<tlib-version>1.0</tlib-version>
<short-name>math</short-name>
<function>
<name>squareroot</name>
<function-class>java.lang.Math</function-class>
<function-signature>double sqrt(double)</function-signature>
<taglib>
name에 들어있는 이름은 jsp페이지에서 저 이름을 참조하게 됩니다.
정적메서드가 아닌 사용자 정의 함수를 등록하려면 마찬가지 형식으로 써주돼 function-class에는 해당 클래스가 있는 위치 ex)/mall.MyClass 를 써주고
function-signature에는 해당 클래스 안에 사용자 정의 메서드 이름을 형식에 맞게 적어주시면 됩니다.
참 쉽죠??
이렇게 tld 파일이 작성 되면 웹 컨테이너가 tld 파일의 존재를 인식하기 위해서 web.xml에 등록해야 합니다.
web.xml 파일
<jsp-config>
<taglib>
<taglib-uri>/math-functions.tld</taglib-uri>
<taglib-location>tlds/math-functions.tld</taglib-location>
</taglib>
</jsp-config>
여기서 현재 버전에 맞지않아 taglib 태그에 빨간 줄이 그어지는 분들이 있을 겁니다.
해결 방안으로
taglib 바깥에 <jsp-config> 태그를 붙입니다.
이렇게 작성 하시면 빨간줄이 뜨지 않습니다. 꼭 참고하시길 바랍니다.
uri는 파일의 식별자로 jsp 페이지에서 사용하게 됩니다.
자 드디어 등록을 마치게 됐습니다.
이제 Jsp페이지에서 호출을 해야되겠죠 ??
호출은 <%@taglib uri="/math-functions.tld" prefix="m"%>을 통해서 사용합니다.
접두어를 이용하여 함수를 호출합니다.
${m:squareroot(4)}
'웹 > JSP' 카테고리의 다른 글
JSTL (0) | 2018.11.12 |
---|---|
표준 액션 (0) | 2018.11.07 |
익스프레션 언어(2) (0) | 2018.10.31 |
익스프레션 언어 (0) | 2018.10.29 |
서블릿의 라이프 사이클(2) (0) | 2018.10.29 |