Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"

时间:2022-01-27 16:42:02

问题描述

今天写jsp的时候想用JSTL的一些标签,但是引用的时候碰到这个问题。

Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"

解决办法

一.看是否引用jstl.jar包,如果没有,则可以下载相应版本的jstr.jar包,并放入WEB-INF的lib文件夹下

Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"

二.应该下载什么版本的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的位置:

Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"

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