欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JSP 自定义标签之一 简单实例

程序员文章站 2024-02-16 22:13:34
在jsp中使用自定义标签可以达到这样的目的,事实上,我们所熟知的各类框架基本上都是通过自定义标签的形式来实现的。 通过使用自定义标签,我们可以将实现复杂的逻辑在页面用简单的...
在jsp中使用自定义标签可以达到这样的目的,事实上,我们所熟知的各类框架基本上都是通过自定义标签的形式来实现的。
通过使用自定义标签,我们可以将实现复杂的逻辑在页面用简单的标签来加以展示。下面我们来实现一个非常简单的自定义标签,期望通过这个简单的实例引领各位进入自定义标签的领域。我们准备定义的这个自定义标签所实现的功能是在jsp页面中显示出版权信息,并且在以后的博文中,我们还会对它进行升级改造。
首先,打开编辑器,创建以下java代码:
复制代码 代码如下:

package com.yanzhijun;
import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class copyrighttag extends tagsupport
{
public int doendtag()
{
try
{
string copypre = "颜志军版权所有 &copy2008";
string info = new string(copypre.getbytes(), "iso8859_1");
pagecontext.getout().println(info);
}
catch(ioexception e){}
return eval_page;
}
}

上述代码编辑完成后,编译并生成class文件。并将编译之后的字节码文件连同包名一同放入准备使用当前标签的web应用的web-inf\classes目录之下。例如web应用在名为test的目录之下,则将上述代码编译时生成的com目录全部拷贝至test\web-inf\classes之下即可。
注意:在编译上述代码时,如果不是在集成的环境中进行,例如直接在命令行通过执行javac命令进行编译工作,那么需要手工在环境变量classpath中添加包javax.servlet.jsp所在的位置,对于tomcat而言,这个包的位置是tomcat安装目录下lib目录中的jsp-api.jar。
随后将以下xml格式的文件存入到名为testlib.tld的文件中,文件testlib.tld要存储于目录web-inf\tlds之下。
复制代码 代码如下:

<?xml version="1.0" encoding="iso-8859-1" ?>
<!doctype taglib public "-//sun microsystems, inc.//dtd jsp tag library 1.1//en"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>yzj</shortname>
<tag>
<name>copyright</name>
<tagclass>com.yanzhijun.copyrighttag</tagclass>
<bodycontent>empty</bodycontent>
<attribute/>
</tag>
</taglib>

至此,我们已经完成了一个自定义标签,随后我们就可以在jsp文件中对其进行使用了。例如有如下jsp文件:
复制代码 代码如下:

<%@ taglib uri="web-inf/tlds/testlib.tld" prefix="yzj" %>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312" />
<title>自定义标签简单示例</title>
</head>
<body>
<p>这里是正文内容</p>
<yzj:copyright/>
</body>
</html>

在浏览器中访问该jsp文件,可以看到,在页面底部,显示了“颜志军版权所有 ©2008”的信息,这正是我们定义的这个自己定义标签的作用。
通过上面的过程,已经实现了自定义标签,并对其进行使用测试。关于其原理、机制、要注意的细节等问题,在请等待随后的博文。