在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标签直接对应属性名${属性名}


 
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端)作用比较复杂,可以实现很多高级的作用。

jsp中 自定义 tag的几种方式的更多相关文章

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

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

  2. JSP中的TAG

    http://blog.csdn.net/hongweigg/article/details/12006849 JSP标签有两种实现方法,一种是使用tag 文件,一种是使用tld文件. 1.使用tag ...

  3. JavaScript学习12 JS中定义对象的几种方式

    JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...

  4. android中解析文件的三种方式

    android中解析文件的三种方式     好久没有动手写点东西了,最近在研究android的相关技术,现在就android中解析文件的三种方式做以下总结.其主要有:SAX(Simple API fo ...

  5. jQuery中开发插件的两种方式

    jQuery中开发插件的两种方式(附Demo) 做web开发的基本上都会用到jQuery,jQuery插件开发两种方式:一种是类扩展的方式开发插件,jQuery添加新的全局函数(jQuery的全局函数 ...

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

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

  7. Struts中的数据处理的三种方式

    Struts中的数据处理的三种方式: public class DataAction extends ActionSupport{ @Override public String execute() ...

  8. (六)javascriptJS中定义对象的几种方式(转)

    JavaScript学习12 JS中定义对象的几种方式 转自:  http://www.cnblogs.com/mengdd/p/3697255.html JavaScript中没有类的概念,只有对象 ...

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

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

随机推荐

  1. win7注册表损坏的修复方法

    win7注册表损坏的修复方法 发布时间:2013-07-19 09:31发布者:系统城-小薇浏览数:3129 注册表是window系统中的一个非常重要的数据库,用于存储电脑系统和应用程序的设置信息,我 ...

  2. 流畅的python第十五章上下文管理器和else块学习记录

    with 语句和上下文管理器for.while 和 try 语句的 else 子句 with 语句会设置一个临时的上下文,交给上下文管理器对象控制,并且负责清理上下文.这么做能避免错误并减少样板代码, ...

  3. CentOS7 下安装 Lnmp 架设 Laravel

    最近在hostos上买了个香港的 vps, 装的 centos7, 在架设了 pptp vpn, 效果还行,就想顺便架设个 laravel 看看.下面是架设的过程.准备工作 更新 yum 源,自带的源 ...

  4. MAVEN 配置阿里巴巴镜像

    配置 修改maven根目录下的conf文件夹中的setting.xml文件,内容如下: <mirrors> <mirror> <id>alimaven</id ...

  5. 【4.29安恒杯】writeup

    #### 安恒杯_writeup 下面为比赛中做出的题目 MISC: SHOW ME THE FLAG-by-cyyzore CRYPTO: LAZYATTACK-by-GoldsNow 这一题非常巧 ...

  6. 云计算之路-试用Azure:拐弯抹角的负载均衡

    负载均衡是云服务商标配的免费服务.阿里云的对应产品叫SLB,UCloud的对应产品叫ULB,操作都很简单直观,进入负载均衡管理控制台,添加负载均衡,选择相应的虚拟机即可. 而Azure则完全不一样,在 ...

  7. Android 网络请求框架Retrofit

    Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可,大量的app都采用OkHttp ...

  8. 建站笔记1:centos6.5下安装mysql

    近期买了个域名,想要玩玩自己建站点:接下来遇到的问题都会一次记录下来.以备自己以后复习查看: 首先建站方案选择: wordPress +centos6.5 +mysql; server买的:搬瓦工最低 ...

  9. 解决64位操作系统下运行psql的问题

    我的机器环境是 win7 64位.正常情况下,只需要安装plsql 和 oracle client,配置好 tnsname.ora 就能正常访问数据库.实际上遇到了几个问题. 1. 在tnsnames ...

  10. STL源码剖析(仿函数/bind2nd)

    仿函数(functors)其实就是重载了operator()的对象. 下面简单先看看它的一个例子: #include <iostream> using namespace std; tem ...