JSP自定义标签

利用 自定义标签,软件开发人员和页面设计人员可以独立地自由工作.页面设计人员可以把精力集中在使用标签(HTML,XML或者JSP)创建网站上,而软件开发人员则可以将精力集中在实现底层功能上面,若国际化等等,这样,页面设计人员可以使用自定义标签的形式来实现具体的功能.

下面我们来指定一个简单的标签,步骤如下

  1. 扩张TagSupport
  2. 写自定义Tag的tld文件
  3. web.xml中指定你的tld文件
  4. 在JSP页面使用自定义标签

 

 

  • 扩张TagSupport

 

        说明:
                一般不会去实现Tag接口,而是通过TagSupport类是实现了Tag的接口继承过来的字段,这些字段用做public int               doStartTag(),public int doEndTag()返回值
                Tag.EVAL_BODY_INCLUDE 包含主体内容
                Tag.SKIP_BODY     不包含主体内容
                Tag.EVAL_PAGE      包含后面的页面内容 
                Tag.SKIP_PAGE     不包含主体的内容   

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.JspTagException;

import javax.servlet.jsp.tagext.TagSupport;

public class HelloTag extends TagSupport {

public HelloTag() {

}

// Method called when the closing hello tag is encountered

public int doEndTag() throws JspException {

try {

pageContext.getOut().print("Hello");

} catch (Exception e) {

throw new JspTagException(e.getMessage());

}

return SKIP_BODY;//不包含主体内容 

}

public void release() {

 

super.release();

}

}  

 

创建Tag Library 的描述文件mytaglib.tld 文件,在这个文件中定义了mytaglib 标签

库和hello 标签。这个文件存放在/WEB-INF/mytaglib.tld。代码如下:

<?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">

<!-- a tag library descriptor -->

<taglib>

<tlibversion>1.0</tlibversion>

<jspversion>1.2</jspversion>

<shortname>mytaglib</shortname><!-- 标签的简写 --> 

<uri>/mytaglib</uri>

<tag>

<name>hello</name><!-- 标签名字 --> 

<tagclass>com.tag.HelloTag</tagclass> <!-- 指定你的标签的类 -->  

<bodycontent>empty</bodycontent>

<info>Just Says Hello</info>

</tag>

</taglib>

 

 

 标签库元素<taglib>属性:表格如下
        

<taglib>属性表格</taglib>
属性 描述
tlib-version 本标签库实现版本
jsp-version 标签库依赖的JSP版本
short-name 被JSP创作工具使用的一个短的默认名词
uri 指定这个标签库的uri信息
display-name 被工具使用的显示用的名字
small-icon 被工具使用的小图标
large-icon 被工具使用的大图标
description 本标签的描述
validator TLD验证信息
listener 实践监听器规范
        tag标签相关属性:
tag标签相关属性表
属性 描述
name tag标签唯一的名称
tag-class tag标签的处理类
tei-class tag标签的TagExtraInfo类
body-content 标签主体的内容
display-name 显示的名称
small-icon 被工具使用的小图标
large-icon 被工具使用的大图标
description 本标签的描述
variable 脚本变量的信息
attribute 标签属性的信息

 

在web.xml 中加入<taglib>元素,代码如下:

<?xml version="1.0" encoding="ISO-8859-1"?>

<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">

<jsp-config>

<taglib>

<taglib-uri>/mytaglib</taglib-uri>

<taglib-location>/WEB-INF/mytaglib.tld</taglib-location>

</taglib>

</jsp-config>  

</web-app>

 

当使用web-app_2_4 版本dtd(Document Type Definition 文档类型定义)定义的时

候,是不需要在web.xml 文件里面显示声明标记库插件的,使用低于2_4 版本的时候才需要

使用,上例中我们使用了显示声明的方式其实是不必要的。

 

在hello.jsp 文件中加入hello 标签。

 

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>  

<%@ taglib uri="/mytaglib" prefix="out" %>  

<html>  

  <head>  

    <title>mytag.jsp</title>  

  </head>    

  <body>  

    <out:hello/>  <!-- 页面执行的结构,就是:  Hello -->

  </body>  

</html>  

http://ajava.org/course/jsp/12568.html

 

 

你可能感兴趣的:(exception,jsp,工具,library,encoding,Descriptor)