- 등록할 파일 : TLD 파일(ex : 웹어플리케이션/web-app/WEB-INF/tld/math-functons.tld)
- TLD 파일의 골격(TLD 파일 생성하기)
<taglib xmlns="http://java.sun.com/xml/ns/javaee" version="2.1">
(TLD 문법의 식별자) (TLD 문법의 버전)
<tlib-version>1.0</tlib-version> -> 태그 라이브러리의 버젼
<short-name>math</short-name> -> 태그 라이브러리의 이름
<function>
<name>squareroot</name> -> EL 함수의 이름(나름대로 정한 EL 함수의 명칭)
<function-class>java.lang.Math</function-class> -> 자바 정적메서드(static method)가 속하는 클래스 풀네임
<function-signature>double sqrt(double)</function-signature> -> 정적 메서드의 시그니처
</function>
</taglib>
- TLD 파일 생성을 하여도 바로 호출할 수 없다. web.xml 파일에 TLD 파일을 등록해야한다.
<web-app>
<taglib>
<taglib-uri>/math-functions.tld</taglib-uri> -> TLD 파일의 식별자 명칭
<taglib-location>tlds/math-functions.tld</taglib-location> -> TLD 파일의 실제 경로명
</taglib>
</web-app>
- JSP 페이지에 호출하기 위해 지시어(<%@ %>) 사용해서 등록하기
<%@taglib uri="/math-functions.tld" prefix="m" %>
- JSP 페이지에서 호출해서 사용하기
${m:squareroot(4)}
설명 : java.lang.Math 클래스의 sqrt 메서드를 'squareroot' 라는 이름의 EL 함수로 등록한다!! 잊어버리자 말자.
----------------------------------------------------------------------------------------------------
※ 테스트를 하는데 web.xml 에 <taglib> 태그에서 오류가 발생!!!
google 검색 결과 답변은...
web.xml 이부분에서
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
빨간색으로 나타낸 부분을 지우면 된다.
XML 스키마나 DTD 지정은 JSP/Servlet 어플리케이션 지정할 때 매우 민감하게 작용합니다.
요즘에는 Servlet Spec 2.3 이 보통이고, 최근들어 2.4도 많이 쓰는 추세입니다. 2.2는 안쓰게 된지 오래됐습니다.
그러니까 처음에 지정한 DOCTYPE에서 2.2로 지정하면 안됩니다.(DOCTPYE 삭제해버린다)
Servlet 스펙 2.4(가장 최신)에서는 web.xml 에서 TLD 파일을 지정하는 기능이 없다.
내 이클립스에서 생성된 web.xml version=2.5 에서 오류가 발생하는 것이다.
해결방법
1. 위의 빨간 밑줄 부분을 삭제한다.
2. web.xml 에 TLD 파일 지정하지않고, 바로 JSP 에서 <%@ taglib uri="tld파일경로 지정" prefix="c" %>
TLD 설치경로 : 웹 어플리케이션 디렉터리/WEB-INF 서브디렉터리 아래이면 어느 곳이든 상관 없다.
'공부 > JSP' 카테고리의 다른 글
JSP_[JDBC 연결 PreparedStatement 와 Statement 차이] (0) | 2012.10.11 |
---|---|
JSP_[JSTL 함수 라이브러리 사용] (0) | 2012.10.03 |
JSP_[자바Bean의 프로퍼티 가져와서 EL 출력하는 방법] (0) | 2012.09.19 |
JSP_[익스프레션 언어(EL) 해석 순서 및 특정 애트리뷰트 사용하기] (0) | 2012.09.19 |
JSP_[웹 어플리케이션의 초기화 파라미터 값 설정] (0) | 2012.09.19 |