Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"
问题描述
今天写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