web.xml配置自定义标签的一个问题

SwaggerHe 2008-07-27 12:17:50
我刚开始学习JSP自定义标签,在配置web.xml出现下面问题:
我开发的配置是Tomcat 5.5 +myecipse 6.0
下面是我的文件结构和代码.
Helloworld.java

package mytag;

import java.io.IOException;

import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;

public class Helloworld extends TagSupport {
public int doEndTag()throws JspTagException
{
try {
pageContext.getOut().write("Helloworld");
} catch (IOException e) {
// TODO Auto-generated catch block
throw new JspTagException("错误");
}

return EVAL_PAGE;

}

}



/WebRoot/WEB-INF/HellowordTag.tld
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>

<short-name>mytag</short-name>
<uri>http://www.tag.com/mytag</uri>
<tag>
<name>Helloworld</name>
<tag-class>mytag.Helloworld</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>


web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
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">

<taglib>
<taglib-uri>http://www.tag.com/mytag</taglib-uri>
<taglib-location>/WEB-INF/HelloworldTag.tld</taglib-location>
</taglib>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>


usetag.jsp

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://www.tag.com/mytag"prefix="mytag" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>

<body>
<mytag:Helloworld/>
</body>
</html>



以上代码只有Web.xml文件种的<taglib>这个标签出现红的波浪线,其他的代码都没问题。但是运行的结果是Helloworld 没有问题。我不明白的是web.xml中的<taglib>为什么有错误 在JSP文件调用自定义标签时候又能用呢?
迷惑中`````````
...全文
751 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sll347 2008-10-27
  • 打赏
  • 举报
回复
Myself_jgl 很厉害
我刚刚也碰到了重复的问题!
谢了!
I520WUCHAN 2008-07-31
  • 打赏
  • 举报
回复
Myself_jgl 很厉害
学习了
vlemfun 2008-07-27
  • 打赏
  • 举报
回复
Myself_jgl 很厉害
学习了
SwaggerHe 2008-07-27
  • 打赏
  • 举报
回复
今天找到问题所在了,二楼说的配置是有点重复。

<taglib>
<tlib-version>1.0 </tlib-version>
<jsp-version>1.2 </jsp-version>

<short-name>mytag </short-name>
<!--这里的uri基本重复,不起作用,可以不用写
<uri>http://www.tag.com/mytag </uri>
-->
<tag>
<name>Helloworld </name>
<tag-class>mytag.Helloworld </tag-class>
<body-content>empty </body-content>
</tag>
</taglib>

真正出现警告的是必须在web.xml里加点东西。

<!--在前面加上jsp-config标签队来配置就不会出警告了 -->
<jsp-config>
<taglib>
<taglib-uri>http://www.tag.com/mytag </taglib-uri>
<taglib-location>/WEB-INF/HelloworldTag.tld </taglib-location>
</taglib>
</jsp-config>

TanZiCheng 2008-07-27
  • 打赏
  • 举报
回复
我也学到这个地方,也遇到同样的问题,心中很不解。我用的是Tomcat 6.0.16+Netbeans 6.01中文版。
楼上兄弟说的只需要配置一处就行,是真的吗?我看的书上说要连web.xml一起配才行,不知道何故。
Myself_jgl 2008-07-27
  • 打赏
  • 举报
回复
你的配置是对的,但重复了,在web.xml和HellowordTag.tld只需配置一处就行了
配置自定义标签可以有三种方式
1>在web.xml中配置(jsp2.0以上都不需要了)就像你那样
<taglib>
<taglib-uri>http://www.tag.com/mytag</taglib-uri>
<taglib-location>/WEB-INF/HelloworldTag.tld</taglib-location>
</taglib>
在.jsp文件中引用<%@ taglib uri="http://www.tag.com/mytag"prefix="mytag" %>
2>在标签库描述中描述(也就是在.tld文件中配置)
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>

<short-name>mytag</short-name>
<uri>http://www.tag.com/mytag</uri>
<tag>
<name>Helloworld</name>
<tag-class>mytag.Helloworld</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
在.jsp文件中通过引用<uri>便可以了(指的是.tld文件中的uri)
<%@ taglib uri="http://www.tag.com/mytag"prefix="mytag" %>
3>直接在.jsp文件中引用(将uri指定到.tld)
<%@ taglib uri="/WEB-INF/HelloworldTag.tld"prefix="mytag" %>


81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧