在jsp文件中,可以引用tag和tld文件。
1.对于tag文件,使用tagdir引用(这个直接是引用的后缀tag文件的jsp文件)
<%@ taglib prefix="ui" tagdir="/WEB-INF/tags" %>
其中的tags是个目录,里面有若干tag文件。
但使用<ti:XXXX>时,目录WEB-INF/tags下,必然有个XXXX.tag文件与之对应。
其实这里直接引tag文件就像include一个jsp文件,可以写java代码,可以写html标签,可以写js,用el标签直接对应属性名${属性名}
参考 jsp tag 直接文件实现
2.对于tld文件(这个可以自定义两种,不过都是通过Class类扩展的,可以定义的两种为function和tag,function是el表达式${}扩展的,tag是跟上面一样<xxx:xxx>这种格式)

2.1基于tld的自定义fucntion 参考 jsp tld的function 自定义方法扩展
2.2基于tld自定义的tag java代码端参考 jsp tld 的tag 自定义标签扩展
在jsp中可以引用TLD文件,引用的查找方式:
1.直接指向一个文件,当然就不用照抄了
2.直接指向一串url(其实就是找jar下面的web-inf)
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
但是这个http://java.sun.com/jsp/jstl/core对应着什么呢?
jsp会在当前目录的\WEB-INF下找所有tld文件
当找到某一个.tld文件时,发现tld中的
  1. <description>JSTL 1.1 core library</description>
  2. <display-name>JSTL core</display-name>
  3. <tlib-version>1.1</tlib-version>
  4. <short-name>c</short-name>
  5. <uri>http://java.sun.com/jsp/jstl/core</uri>
其中的uri与这个引入URL对应,则引用的就是这个tld。
但使用<html:YYYYY>时,这个TLD文件中必然有个YYYY项与之对应。
以上在打包jar的META-INF木木的查找方式是一样的
还有一种更保险的方法是,在WEB-INF/web.xml中加上
<taglib>
<taglib-uri>
http://jakarta.apache.org/tomcat/examples-taglib
</taglib-uri>
<taglib-location>
/WEB-INF/jsp/example-taglib.tld
</taglib-location>
</taglib>
这样表示http://jakarta.apache.org/tomcat/examples-taglib对应着/WEB-INF/jsp/example-taglib.tld
ps:tag和tld文件最好放在(WAR包)WEB-INF或者(jar包)META-INF根目录或子目录下,最好以tags或者tlds文件名命名,至于不放在以上目录没测试过
关于在打包jar的时候怎么放进META-INF目录而且不被自动build的覆盖
1.解压jar手动丢进去
2.maven配置待续
tag文件作用一般是一段小代码,类似include文件的作用。(直接的一个tag文件,直接当成引一个jsp就可以了,只是开头多了一些属性定义和动态获取属性的特性 )
tld文件(自定义function和自定义tag java端)作用比较复杂,可以实现很多高级的作用。

转载于:https://www.cnblogs.com/signheart/p/66409e0db514ed0071e03b1430eba018.html

jsp中 自定义 tag的几种方式相关推荐

  1. jsp中头的导入两种方式区别

    1.<jsp:include page="top.jsp">先将top.jsp中的java脚本和jsp指令执行完毕以后再讲top.jsp页面加入面中 2.<%@ ...

  2. android获取自定义属性,android 自定义控件中获取属性的三种方式(转)

    第一种方法,直接设置属性值,通过attrs.getAttributeResourceValue拿到这个属性值. (1)在xml文件中设置属性值 android:layout_width="f ...

  3. EntityFramework Core 2.0自定义标量函数两种方式

    前言 上一节我们讲完原始查询如何防止SQL注入问题同时并提供了几种方式.本节我们继续来讲讲EF Core 2.0中的新特性自定义标量函数. 自定义标量函数两种方式 在EF Core 2.0中我们可以将 ...

  4. iOS 自定义layer的两种方式

    在iOS中,你能看得见摸得着的东西基本都是UIView,比如一个按钮,一个标签,一个文本输入框,这些都是UIView: 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层 在创建UIVi ...

  5. vue自定义组件是.vue还是html,Vue自定义组件的四种方式示例详解

    四种组件定义方式都存在以下共性(血泪史) 规则: 1.组件只能有一个根标签 2.记住两个词全局和局部 3.组件名称命名中'-小写字母'相当于大写英文字母(hello-com 相当于 helloCom) ...

  6. Android中播放音乐的几种方式

    Android中播放音乐的几种方式 前言 前几天一直在研究RxJava2,也写了记录了几篇博客,但因为工作任务原因,需要研究音频相关的知识,暂时放下Rxjava,本文的demo中,MediaPalye ...

  7. JavaScript概述和HTML中嵌入JavaScript的三种方式

    "成功没有捷径,脚踏实地一步一个脚印,该来的总会来,不好高骛远,不急功近利,付出总会有回报,不管处于哪个阶段,都要一步一个脚印,踏实的走好每一步!" 目录 01.JavaScrip ...

  8. 知识分享之Golang——使用gorm时进行执行自定义SQL的几种方式

    知识分享之Golang--使用gorm时进行执行自定义SQL的几种方式 背景 知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进 ...

  9. 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    贺邦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的: 使用库函数 ...

最新文章

  1. the user operation is waiting for building workspace to complete解决办法
  2. XDC约束技巧之时钟篇
  3. 防抖动函数(debounce)的原理
  4. Java消息队列--ActiveMq 初体验
  5. oracle_修改连接数
  6. 从零开始编写自己的C#框架(1)——前言
  7. em算法python代码_EM算法的python实现的方法步骤
  8. assertpythonraise_使用assertRaise测试异常消息
  9. 分类图片展示php源码,HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)...
  10. 【转】热门3D游戏视觉效果名词简介
  11. matlab平滑图像轮廓,Matlab 画平滑轮廓 print 高质量 figure
  12. Cortex-M3概述
  13. 打印机乱码不停打印_性价比高的打印机推荐【2020年9月】-十大高性价比家用/办公打印机...
  14. Codeforces Round #521 (Div. 3) E - Thematic Contests (二分 + STL)
  15. 已更新 联通 电信 tiny模式
  16. VsCode镜像下载(国内镜像源,高速秒下)
  17. UVA1593 代码对齐 输入输出控制
  18. 个人家用nas_方便易用的家用NAS私家云不超千元
  19. n个评委给m个选手打分python_n个评委为m个选手打分(n个评委打分总次数mn)。请问如何评判m个选手的成绩?...
  20. php mysql 变量赋值_mysql存储过程中变量的定义赋值操作

热门文章

  1. python判断手机号码是否正确_Python实现随机生成手机号及正则验证手机号的方法...
  2. C语言计算最大公约数和最小公倍数,C语言计算最大公约数和最小公倍数
  3. linux 添加deepin ppa,Deepin 添加PPA源问题
  4. 数据结构vl怎么求_数据结构
  5. Oracle备份与还原(exp和imp),导出导入
  6. 第十二章:Spring Cloud Config Server 的配置
  7. 烂泥:更换ESXI5.0管理网卡及管理IP地址
  8. jedis高版本的JedisPoolConfig没有maxActive和maxWait
  9. 小学徒进阶系列—JVM对String的处理
  10. 关于IAP:测试时能获取产品价格,却不能获取产品名称的问题