关于web.xml中不能识别taglib的问题

来源:互联网 发布:自动发卡源码带wap 编辑:程序博客网 时间:2024/06/05 18:12
 关于web.xml中不能识别<taglib>的问题
关于eclips中不能识别<taglib>的问题
org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application

myeclips5的标签使用,再web.xnl中不用声明<taglib>标签就可以直接使用标签,这好像是2.4版本的特点。
但是,再jsp页面中
必须加上:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>,
如果不加,标签被忽视,显示空白。
如果写为:<%@ taglib uri="http://java.sun.com/jsf/core" prefix="c"%>,则是会报错!!!!!
这是为什么呢?
原因是这样的的!!!
如果使用标签,jstl.jar+standard.jar应该放到工程的lib目录下。
解压缩standard.jar然后到里面的META-INF里面找到标签描述文件(很多.tld文件),然后打开tld文件,看看里面不同的uri就可以了。
我解开c.tld,看到这句话<uri>http://java.sun.com/jsp/jstl/core</uri>,这就是原因!!!!!

总之:
完全可以:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
不可以:
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="c"%>

myeclips是没有再web.xml中自动添加<taglib>标签的,这不是myeclips的bug,可见myecips还是很聪明的,我们要相信它。
如果*.tld文件不在WEB-INF下,就需要写了,格式为:
<jsp-config>
   <taglib>
    <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
    <taglib-location>token</taglib-location>
   </taglib>
</jsp-config>


模板如下:

=========================index.jsp=============================

<%@ page language="java" pageEncoding="GB18030"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
   <title>My JSF 'index.jsp' starting page</title>

   <!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
   <c:forEach var="i" begin="1" end="30" step="1">
    <c:out value="${i}" />
    <br />
   </c:forEach>
</body>
</html>

=========================web.xml=============================

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
</web-app>


-------------------------------------------------------------


我写了一个自定义的标记库,在web.xml中要写一段<taglib>……</taglib>。
语法和格式都是正确的,在Tomcat中运行都正常,我是用MyEclipse来开发的,其实web.xml可以有taglib这个元素的,但是MyEclipse不认识……总是有个红色的叉子看着很不爽啊,怎么解决这个问题呢?
响应者 1:
你的jar包没有被加载进来,你把报的什么错贴出来
响应者 2:
你加载的是什么WEB.xml,头是不是这种的???
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://JAVA.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/xmlSchema-instance"
xsi:schemaLocation="http://JAVA.sun.com/xml/ns/j2ee
http://JAVA.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
响应者 3:
是的话,要加载标签库是这样的
<jsp-config>
<taglib>
<taglib-uri>XXXXX</taglib-uri>
<taglib-location>XXXXXXX</taglib-location>
</taglib>
</jsp-config>
响应者 4:
谢谢Asclepios()

--------------------------------------------------------------------------------------------------------------------------
在tomcat中配置自定义标签的时候,会遇到一个问题

web.xml中,有两个版本的DTD认证,一个是java1.2版本的,一个是2.0版本的,所以就形成了不同版本的时候作出的配置不一样

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd

是2.0版本的

所以在web.xml中添加自己的taglib的时候要包含在<jsp-config></jsp-config>中间才行.

<jsp-config>
<taglib>
      <taglib-uri>/date</taglib-uri>
      <taglib-location>/WEB-INF/date.tld</taglib-location>
</taglib>
</jsp-config

---------------------------------------------------------------------------------------------------------------------------
<jsp-config>标签使用详解
<jsp-config> 包括<taglib> 和<jsp-property-group> 两个子元素。
    
     其中<taglib>元素在JSP 1.2时就已经存在;而<jsp-property-group>是JSP 2.0 新增的元素。
     <jsp-property-group>元素主要有八个子元素,它们分别为:
    
     1.<description>:设定的说明;
     2.<display-name>:设定名称;
     3.<url-pattern>:设定值所影响的范围,如:/CH2 或 /*.jsp;
     4.<el-ignored>:若为true,表示不支持EL 语法;
     5.<scripting-invalid>:若为true,表示不支持<% scripting %>语法;
     6.<page-encoding>:设定JSP 网页的编码;
     7.<include-prelude>:设置JSP 网页的抬头,扩展名为.jspf;
     8.<include-coda>:设置JSP 网页的结尾,扩展名为.jspf。


一个简单的<jsp-config>元素完整配置:

<jsp-config>
     <taglib>
         <taglib-uri>Taglib</taglib-uri>
         <taglib-location>/WEB-INF/tlds/MyTaglib.tld</taglib-location>
     </taglib>
     <jsp-property-group>
         <description>Special property group for JSP Configuration JSP example.</description>
         <display-name>JSPConfiguration</display-name>
         <url-pattern>/jsp/* </url-pattern>
         <el-ignored>true</el-ignored>
         <page-encoding>GB2312</page-encoding>
         <scripting-invalid>true</scripting-invalid>
         <include-prelude>/include/prelude.jspf</include-prelude>
         <include-coda>/include/coda.jspf</include-coda>
     </jsp-property-group>
</jsp-config>