刚学自定义标签,求救!

kukiius 2013-12-15 07:45:38
先发3个文件:
标签库定义:文件放在uri指的位置
<?xml version="1.0" encoding="GBK"?>

<taglib 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 web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>mytaglib</short-name>
<!-- 定义该标签库的URI -->
<uri>D:\Tomcat\apache-tomcat-7.0.47\webapps\study\WEB-INF\classes\mytaglib</uri>

<!-- 定义第一个标签 -->
<tag>
<!-- 定义标签名 -->
<name>helloWorld</name>
<!-- 定义标签处理类 -->
<tag-class>HelloWorldTag</tag-class>
<!-- 定义标签体为空 -->
<body-content>empty</body-content>
</tag>

</taglib>


JSP页面:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%@page import="java.util.*" %>
<%@ taglib uri= "D:\Tomcat\apache-tomcat-7.0.47\webapps\study\WEB-INF\classes\mytaglib" prefix="mytag"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>a.jsp</title>
</head>
<body>

<mytag:helloWorld/>

</body>
</html>


自定义标签类:放在uri那个文件夹里
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;

public class HelloWorldTag extends SimpleTagSupport{

public void doTag() throws JspException, IOException{
getJspContext().getOut().write("Hellow World" + new java.util.Date());
}

}



问题:
1.在浏览器中打开后,显示:HTTP Status 500 - The absolute uri: D:\Tomcat\apache-tomcat-7.0.47\webapps\study\WEB-INF\classes\mytaglib cannot be resolved in either web.xml or the jar files deployed with this application。。。。。。刷新几下又显示HTTP Status 500 - java.lang.ClassNotFoundException: org.apache.jsp.a_jsp。。。。为什么??
如果把jsp页面中的<%@ taglib 那段删掉(body也空),页面可以显示。

2.网上查的时候看到有用web.xml来配置标签,书上没用这种方法,都有什么区别?

弄了3个小时,还搞不好。求救!
...全文
156 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
你好毒你好毒 2013-12-16
  • 打赏
  • 举报
回复
引用 3 楼 u012463264 的回复:
web.xml中配置 <jsp-config> <taglib> <taglib-uri>/WEB-INF/引用的名字</taglib-uri> <taglib-location>/WEB-INF/tlds/tld文件名</taglib-location> </taglib> </jsp-config> jsp中引用: <%@ taglib uri="/WEB-INF/引用的名字" prefix="mytaglib" %>
他这个已经在src下加了tld文件
别闹腰不好 2013-12-16
  • 打赏
  • 举报
回复
web.xml中配置 <jsp-config> <taglib> <taglib-uri>/WEB-INF/引用的名字</taglib-uri> <taglib-location>/WEB-INF/tlds/tld文件名</taglib-location> </taglib> </jsp-config> jsp中引用: <%@ taglib uri="/WEB-INF/引用的名字" prefix="mytaglib" %>
别闹腰不好 2013-12-16
  • 打赏
  • 举报
回复
自定义标签要在web。xml中注册一下 ,你在jsp页面引的标签不对,
你好毒你好毒 2013-12-16
  • 打赏
  • 举报
回复
首先你的<tag-class>HelloWorldTag</tag-class>配置的不对,这个应该是包名加类名的全路径,其次是uri没必要那么做,比如<uri>http://www.xxxooo.com/mytaglib</uri>,然后在页面上使用时候,<%@ taglib uri= "http://www.xxxooo.com/mytaglib" prefix="mytag"%>,这个uri其实不是很讲究,tag-class更为重要
你好毒你好毒 2013-12-16
  • 打赏
  • 举报
回复
引用 5 楼 kuki_iu 的回复:
[quote=引用 4 楼 MrsFeng 的回复:] [quote=引用 3 楼 u012463264 的回复:] web.xml中配置 <jsp-config> <taglib> <taglib-uri>/WEB-INF/引用的名字</taglib-uri> <taglib-location>/WEB-INF/tlds/tld文件名</taglib-location> </taglib> </jsp-config> jsp中引用: <%@ taglib uri="/WEB-INF/引用的名字" prefix="mytaglib" %>
他这个已经在src下加了tld文件[/quote] 我已经试过了,改了2个地方,一个是web.xml文件加上了2楼说的,一个是给类加上包名。才成功。去掉一个都不行。 问一下: 1.为什么一定要加包名,一开始我在标签处理类中没有定义包?一定要加了包才可以。。是规定吗? 2.不在web.xml中加上配置为什么不可以。不加就显示HTTP Status 500 - /a.jsp (line: 12, column: 0) No tag "helloWorld" defined in tag library imported with prefix "mytag"。我是按照书上来的,书上也没有配置这个,求解![/quote] 我用的自定义jsp标签确实跟web.xml没什么关系,既然你解决了那就这样做吧
kukiius 2013-12-16
  • 打赏
  • 举报
回复
引用 5 楼 kuki_iu 的回复:
[quote=引用 4 楼 MrsFeng 的回复:] [quote=引用 3 楼 u012463264 的回复:] web.xml中配置 <jsp-config> <taglib> <taglib-uri>/WEB-INF/引用的名字</taglib-uri> <taglib-location>/WEB-INF/tlds/tld文件名</taglib-location> </taglib> </jsp-config> jsp中引用: <%@ taglib uri="/WEB-INF/引用的名字" prefix="mytaglib" %>
他这个已经在src下加了tld文件[/quote] 我已经试过了,改了2个地方,一个是web.xml文件加上了2楼说的,一个是给类加上包名。才成功。去掉一个都不行。 问一下: 1.为什么一定要加包名,一开始我在标签处理类中没有定义包?一定要加了包才可以。。是规定吗? 2.不在web.xml中加上配置为什么不可以。不加就显示HTTP Status 500 - /a.jsp (line: 12, column: 0) No tag "helloWorld" defined in tag library imported with prefix "mytag"。我是按照书上来的,书上也没有配置这个,求解![/quote] 错了,不好意思,是去掉web.xml也可以! 第2个问题改为如果加上web.xml。可以去掉其他什么配置吗?还有其他配置方法?
kukiius 2013-12-16
  • 打赏
  • 举报
回复
引用 4 楼 MrsFeng 的回复:
[quote=引用 3 楼 u012463264 的回复:] web.xml中配置 <jsp-config> <taglib> <taglib-uri>/WEB-INF/引用的名字</taglib-uri> <taglib-location>/WEB-INF/tlds/tld文件名</taglib-location> </taglib> </jsp-config> jsp中引用: <%@ taglib uri="/WEB-INF/引用的名字" prefix="mytaglib" %>
他这个已经在src下加了tld文件[/quote] 我已经试过了,改了2个地方,一个是web.xml文件加上了2楼说的,一个是给类加上包名。才成功。去掉一个都不行。 问一下: 1.为什么一定要加包名,一开始我在标签处理类中没有定义包?一定要加了包才可以。。是规定吗? 2.不在web.xml中加上配置为什么不可以。不加就显示HTTP Status 500 - /a.jsp (line: 12, column: 0) No tag "helloWorld" defined in tag library imported with prefix "mytag"。我是按照书上来的,书上也没有配置这个,求解!

81,092

社区成员

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

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