JSTL은 인터넷 연결이 없으면 사용할 수 없을까?
jsp에서 JSTL을 이용해 개발을 하는 도중에 의문이 생겼다. 만약, 인터넷 연결 없이 내부 인트라넷으로 이 페이지를 호출한다면 JSTL이 정상적으로 동작할까? JSTL의 taglib을 include할 때 uri 속성이 마음에 걸렸다. 왠지 uri 속성 때문에 인터넷 연결이 끊기면 동작하지 않을 것 같아 한 번 알아보았다.
아래는 태그별 선언 방법이다.
1 2 3 4 5 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c-rt" %> <%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %> <%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt-rt" %> | cs |
어떤가? 나와 같은 의문이 들지 않는가?
그런데, 사실 uri는 실제로 저 경로를 통해 뭔가를 취득하고 하는게 아니다. 인터넷 연결이 없어도 동작한다. 아래는 오라클에서 제공하는 JSTL 중 core 태그에 관련된 문서이다.
https://docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/c/tld-summary.html
uri는 jstl 라이브러리에서 지원되는 기능을 태그별로 구분해주는 구분자이다. 그렇기 때문에 위 선언 내용에서 prefix 값을 임의로 변경해도 정상적으로 동작하지만, uri의 값을 변경하면 Exception 이 발생하면서 동작하지 않는다. 이러한 사실을 뒷받침하는 사실이 있는데, 현재 JSTL과는 달리 과거에는 jstl 라이브러리 뿐만 아니라 tld 파일이라는 것도 WEB-INF/tld 경로에 설치하고 web.xml에 별도의 설정을 해주어야했다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <taglib> <taglib-uri>http://java.sun.com/jstl/core</taglib-uri> <taglib-location>/WEB-INF/tld/c.tld</taglib-location> </taglib> <taglib> <taglib-uri>http://java.sun.com/jstl/xml</taglib-uri> <taglib-location>/WEB-INF/tld/x.tld</taglib-location> </taglib> <taglib> <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri> <taglib-location>/WEB-INF/tld/fmt.tld</taglib-location> </taglib> | cs |
좀 더 이해가 쉬워졌을지 모르겠다. 직접 확인해보고 싶다면 uri의 값을 제거하거나 변경해보도록 하자.
반응형