jsp自定义标签

本文介绍了JSP自定义标签的概念和特点,包括标签库、标签处理类和标签库描述文件。通过实例展示了如何自定义set、out及foreach标签,并详细解释了每个标签的实现过程和使用方法,最后演示了自定义的Select标签在数据回显中的应用。
摘要由CSDN通过智能技术生成

标签的基本概念:

标签(Tag):

  • 标签是一种XML元素,通过标签可以使JSP网页变得简洁并且易于维护,还可以方便地实现同一个JSP文件支持多种语言版本。由于标签是XML元素,所以它的名称和属性都是大小写敏感的

标签库(Tag library):

  • 由一系列功能相似、逻辑上互相联系的标签构成的集合

标签处理类(Tag Handle Class):

  • 标签处理类似是Java类,这个类继承了TagSupport或者扩展了SimpleTag接口,通过这个类可以实现自定义JSP标签的具体功能

标签库描述文件(Tag Library Descriptor):

  • 它是一个XML文件,这个文件提供了标签库中类和JSP中对标签引用的映射关系。它是一个配置文件,和web.xml是类似的。

标签语言的特点:

  • <开始标签 属性=“属性值”>标签体</结束标签>
  • 空标签:
  • 开始标签:<>
  • 结束标签:</>

通过以下实践我们会慢慢领悟自定义标签生命周期图:
在这里插入图片描述

  • SKIP_BODY:跳过主体
    EVAL_BODY_INCLUDE:计算标签主体内容并[输出]
    EVAL_BODY_BUFFERED:计算标签主体内容并[缓存]
    EVAL_PAGE:计算页面的后续部分
    SKIP_PAGE:跳过页面的后续部分
    EVAL_BODY_AGAIN:再计算主体一次

Jsp标签所需要的包 :

普通的C标签如下图:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:set value="zhansan" var="name"></c:set>
---------
<c:out value="${name}"></c:out>
</body>
</html>

网页显示如下:
在这里插入图片描述

如何自定义标签?

  • 点开C标签uri里面的的链接:http://java.sun.com/jsp/jstl/core ,可以把里面的内容复制到自己想定义的标签里去
  • 再把里面的前几条名字改掉,比如我们来定义一个Z标签,如图:
    在这里插入图片描述

在到自己定义的类里面去写 如下图

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
  	<%@ taglib uri="/zking" prefix="z"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:set value="zhansan" var="name"></c:set>
---------
<c:out value="${name}"></c:out>
-----------------
<z:set value="lisi" var="zname"></z:set>
<z:out value="${zname }">
</z:out>
</body>
</html>

网页显示如下:
在这里插入图片描述

  • 标签库的运作离不开tld文件
  • 标签库的标签是定义在tld中的tag标签内(助手类)

下面我们来实践,定义一个自己的标签

  • 首先我们来定义一个自己的标签,叫做Demo标签
<?xml version="1.0" encoding="UTF-8" ?>

<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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">
    
  <description>zking 1.1 core library</description>
  <display-name>zking core</display-name>
  <tlib-version>1.1</tlib-version>
  <short-name>c</short-name>
  <uri>/zking</uri>


  <tag>
  <!-- 标签库中的标签(类似c:set c:out的定义) -->
    <name>catch</name>
    <!-- 下面是标签运行的具体代码,也就是助手类,填写的是助手类的全路径名 -->
    <tag-class>org.apache.taglibs.standard.tag.common.core.CatchTag</tag-class>
   	<!-- JSP是固定的写法 -->
    <body-content>JSP</body-content>
    <attribute>
    <!-- 该标签的属性 -->
        <name>var</name>
    <!-- 该属性是否必填 -->
        <required>false</required>
    <!-- 是否支持表达式 -->    
        <rtexprvalue>false</rtexprvalue>
    </attribute>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值