問題描述
今天寫jsp的時候想用JSTL的一些標簽,但是引用的時候碰到這個問題。
解決辦法
一.看是否引用jstl.jar包,如果沒有,則可以下載相應版本的jstr.jar包,並放入WEB-INF的lib文件夾下
二.應該下載什么版本的jstl包?
(一)JSTL各版本下載
(1)JSTL1.0(包含2個jar文件:jstl.jar和standard.jar。這兩個jar文件都存在於Standard1.0.x的發布版本中。)
下載地址:http://archive.apache.org/dist/jakarta/taglibs/standard-1.0/binaries/
最新版本是:jakarta-taglibs-standard-1.0.3.zip。解壓后從lib文件夾中找到這個兩個jar包
(2)JSTL1.1(也包含2個jar文件:jstl.jar和standard.jar。這兩個jar文件都存在於Standard1.1.x的發布版本中。)
下載地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
最新版本是:jakarta-taglibs-standard-1.1.2.zip。解壓后從lib文件夾中找到這個兩個jar包
(3)JSTL1.2(只包含1個jar文件:jstl-1.2.jar)
-- JSTL 1.2 is part of the Java EE 5 platform.
下載地址:http://jstl.java.net/
(二)JSTL各版本差異
1. JSTL1.0(不支持EL)、JSTL 1.1和JSTL 1.2支持的servlet,jsp規范都不相同,支持相應規范的tomcat的版本也有要求的。具體如下。
web.xml中要申明相應的servlet版本。
web.xml的位置:
JSTL1.2需要servlet2.5
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
version="2.5"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
JSTL1.1和JSP2.0需要servlet2.4
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4 " xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4 .xsd">
JSTL1.0和JSP1.2需要servlet2.3
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.3 " xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_3 .xsd">
2. JSTL1.0和JSTL1.1的uri是不一樣的,但是他們的tld文件同時存在於同一個standard.jar中。解壓縮下載的standard.jar,你會在/META-INF/下發現有一個c-1_0.tld,還有一個c.tld。其中c-1_0.tld是JSTL1.0的core標簽庫的tld文件,c.tld是JSTL1.1的core標簽庫的tld文件。JSTL1.1與JSTL1.2的uri是一樣的。
JSTL1.0的使用方法為:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
JSTL1.1的使用方法為:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
JSTL1.2的使用方法為
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
開啟EL:只有 servlet2.4 是默認支持 el表達式的。
其他的都要 JSP頁面開頭加入: <%@ page isELIgnored="false"%>servlet2.5默認是禁用el的,所以會出現${}現象,加入上述代碼開啟EL
參考文檔
http://janedoneway.iteye.com/blog/1245949