• JSP Taglib指令具有什么功能呢?


    转自:

    JSP Taglib指令具有什么功能呢?

    下文讲述JSP中Taglib指令的功能简介说明,如下所示:

    Taglib指令的功能:
      定义一个标签库以及其自定义标签的前缀
    一个自定义的tag标签是用户定义的一种JSP标记
    当一个含有自定义的tag标签的JSP页面被jsp引擎编译成servlet时
    此时tag标签被转化成了对一个称为tag处理类的对象进行的操作
    当JSP页面被jsp引擎转化为servlet后,实际上tag标签被转化成为了对tag处理类的操作
    

    Taglib指令的语法

    <%@ taglib uri="" prefix="c"%>
         prefix:是一个标签库别名 
         taglib之uri:引入jsp的标签库
    

    Taglib子元素

    ElementDescription
    tlib-versionTag库的版本
    jsp-versionTag库所需要的jsp的版本
    short-name:助记符,tag的一个别名(可选)
    uri用于确定一个唯一的tag库
    display-name被可视化工具(诸如Jbuilder)用来显示的名称(可选)
    small-icon被可视化工具(诸如Jbuilder)用来显示的小图标(可选)
    large-icon被可视化工具(诸如Jbuilder)用来显示的大图标(可选)
    description对tag库的描述(可选)
    listener一个tag库可能定义一些类做为它的事件侦听类,这些类在TLD中被称为listener 元素,jsp服务器将会实例化这些侦听类,并且注册它们。Listener元素中有一个叫listener-class的子元素,这个元素的值必须是该侦听类的完整类名
    tagtag元素在tag库中需指出它的名字、类名、脚本变量、tag的属性
    其中脚本变量的值可以直接在TLD中定义或通过tag附加信息的类来取得
    每个属性描述了这个属性是否可以省略,它的值是否可以通过<%= …%>
    这样的JSP语法来获得,以及属性的类型 tag子元素如下:
    name:独一无二的元素名
    tag-class:Tag标签对应的tag处理类
    tei-class:javax.servlet.jsp.tagext.TagExtraInfo的子类,用于表达脚本变量(可选)
    body-content:Tag标签body的类型
    display-name:被可视化工具(诸如Jbuilder)用来显示的名称(可选)
    small-icon:被可视化工具(诸如Jbuilder)用来显示的小图标(可选)
    large-icon:被可视化工具(诸如Jbuilder)用来显示的大图标(可选)
    description:此tag标签的描述
    variable:提供脚本变量的信息(同tei-class)(可选)
    attribute:Tag标签的属性名

    Taglib引入方式

    jsp文件:

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
    <%@ taglib prefix="c" uri="myjstl" %>  
      
      
      
          
        Insert title here  
      
      
          
      
    
    


    web.xml

      
                    ...  
          
             
               myjstl  
               /WEB-INF/tld/c.tld  
             
          
                    ...  
    
    

    标准定义标签

    jsp Taglib指令tld例子

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    
    
    
    
    collection
    
    
    
    
    编号 姓名 年龄 时间
    ${l.id} ${l.name} ${l.age} 编辑删除

    开发自定义标签

    开发自定义标签,需使用以下方式:
        步骤一:
    	必须继承一个父类:javax.servlet.jsp.tagext.SimpleTagSupport 
        每个属性都有对应的getter和setter方法。
        重写doTag()或者doStartTag()或doEndTag()方法方法
    	 这个方法负责生成页面内容。
    
    public class TestTag extends TagSupport {
        private static final long serialVersionUID = -3382691015235241708L;
        @Override
        public int doEndTag() throws JspException {
            try {
                pageContext.getOut().write("MyTag");
                return super.doEndTag();
            } catch(JspException e) {
                e.printStackTrace();
                return 0;
            } catch(IOException e) {
                e.printStackTrace();
                return 0;
            }
        }
        @Override
        public int doStartTag() {
            try {
                pageContext.getOut().write("MyTag");
                return super.doStartTag();
            } catch(JspException e) {
                e.printStackTrace();
                return 0;
            } catch(IOException e) {
                e.printStackTrace();
                return 0;
            }
        }
    }
    
     
    步骤二:
      建立一个*.tld文件,每个*.tld文件对应一个标签库,每个标签库对应多个标签
    注意事项:
       TLD(Tag Library Definition)即标签库定义
       文件的后缀是tld
        每个TLD文件对应一个标签库
        一个标签库中可包含多个标签
        TLD文件也称为标签库定义文件
      标签库定义文件的根元素是taglib
        它可以包含多个tag子元素
          每个tag子元素都定义一个标签 
    
     
    
     
      1.0  
      myhelloworld  
        
        
        
       
          
        thisTag  
          
        com.java265.taglib.TestTag  
          
        empty 
       
    
  • 相关阅读:
    Pod控制器详解-Horizontal Pod Autoscaler(HPA)
    优化网站以提升原创性和性能
    Spring简短回顾
    elasticsearch官方学习文档
    原型,原型链的理解
    LSTM基础
    想看,但电脑没网怎么办,python教你保存整本成TXT~
    Nginx location 精准匹配URL = /xxx
    Android修行手册 - 门脸控件-Toolbar
    ubuntu22.04安装java和maven
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/126094442