现在的位置: 首页 > 综合 > 正文

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

2018年01月25日 ⁄ 综合 ⁄ 共 2022字 ⁄ 字号 评论关闭

当前软件开发越来越重视分工与协作,对于JSP技术而言,视图层与模型层分别由不同的团队完成也成为理所当然的选择,基于技术专长不同及其它因素考虑,众多规范中都明确要求JSP页面代码中不允许出现Java代码。在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的信息,这正是我们定义的这个自己定义标签的作用。

通过上面的过程,已经实现了自定义标签,并对其进行使用测试。关于其原理、机制、要注意的细节等问题,在请等待随后的博文。

抱歉!评论已关闭.