一、自定义标签,步骤
* 确定需求
* <my:date /> 输出当前系统的时间 yyyy-MM-dd hh:mm:ss:SSS
* 编写Java类
* 只要与此接口有关的实现类,javax.servlet.jsp.tagext.JspTag
* 需要实现具体的接口
* javax.servlet.jsp.tagext.SimpleTag,简单标签,JSP2.0**
* javax.servlet.jsp.tagext.Tag,经典标签
* 编写tld文件
* tld文件是xml文档
* 扩展名为*.tld
* 位置:必须放置到WEB-INF目录下
* 内容:
<!-- 确定当前标签库的版本 -->
<tlib-version>1.0</tlib-version>
<!-- 建议引入当前便签库是,使用的简写 @taglib prefix="my" -->
<short-name>my</short-name>
<!-- 为当前标签库配置文件,起一个名称
* 内容:自定义,全球唯一
-->
<uri>http://www.itcast.cn/jsp/mytag</uri>
<!-- <my:date / > 注册标签 -->
<tag>
<!-- 确定标签名称 -->
<name>date</name>
<!-- 确定实现类 -->
<tag-class>cn.itcast.tag.MyDateTag</tag-class>
<!-- 格式化当前标签的body内容
* empty:当前标签没有标签体
-->
<body-content>empty</body-content>
</tag>
* 配置tld文件(可选)
* 在JSP页面引入
* <%@ taglib uri="http://www.itcast.cn/jsp/mytag" prefix="my"%>
* 测试
* <my:date />
二、案例
* 需求:<my:maxVal num1="12" num2="13" />
* 需求:<my:readFile file="/" />
* 需求:<my:toUpperCase>xxYYdfsdDFwerd</my:toUpperCase>
* 需求:循环
三、自定义函数
* 创建类,但方法必须是静态的
public static void calculator(Calculator cal){
* 书写配置文件tld
<!-- 确定当前函数 myfn:calculator(cal)-->
<function>
<name>calculator</name>
<function-class>cn.itcast.domain.Calculator</function-class>
<!-- 当前使用函数的声明 public static void calculator(Calculator cal)-->
<function-signature>void calculator(cn.itcast.domain.Calculator)</function-signature>
</function>
* 引用
* <%@ taglib uri="http://www.itcast.cn/mytag/functions" prefix="myfn" %>
* 测试
* ${myfn:calculator(cal)}
四、总结
* 共同点:
* 需要引入
* <%@ taglib uri="http://www.itcast.cn/mytag/myeach" prefix="my" %>
* 都需要配置tld文件
* 区别:
* 自定义标签
* 创建一个类,完成一个功能或一组功能。
* 可以选择el表达式
* 自定义函数
* 创建一个静态方法,完成一个操作。
* 必须与EL表单是结合使用
${fn:xxxx}
* 确定需求
* <my:date /> 输出当前系统的时间 yyyy-MM-dd hh:mm:ss:SSS
* 编写Java类
* 只要与此接口有关的实现类,javax.servlet.jsp.tagext.JspTag
* 需要实现具体的接口
* javax.servlet.jsp.tagext.SimpleTag,简单标签,JSP2.0**
* javax.servlet.jsp.tagext.Tag,经典标签
* 编写tld文件
* tld文件是xml文档
* 扩展名为*.tld
* 位置:必须放置到WEB-INF目录下
* 内容:
<!-- 确定当前标签库的版本 -->
<tlib-version>1.0</tlib-version>
<!-- 建议引入当前便签库是,使用的简写 @taglib prefix="my" -->
<short-name>my</short-name>
<!-- 为当前标签库配置文件,起一个名称
* 内容:自定义,全球唯一
-->
<uri>http://www.itcast.cn/jsp/mytag</uri>
<!-- <my:date / > 注册标签 -->
<tag>
<!-- 确定标签名称 -->
<name>date</name>
<!-- 确定实现类 -->
<tag-class>cn.itcast.tag.MyDateTag</tag-class>
<!-- 格式化当前标签的body内容
* empty:当前标签没有标签体
-->
<body-content>empty</body-content>
</tag>
* 配置tld文件(可选)
* 在JSP页面引入
* <%@ taglib uri="http://www.itcast.cn/jsp/mytag" prefix="my"%>
* 测试
* <my:date />
二、案例
* 需求:<my:maxVal num1="12" num2="13" />
* 需求:<my:readFile file="/" />
* 需求:<my:toUpperCase>xxYYdfsdDFwerd</my:toUpperCase>
* 需求:循环
三、自定义函数
* 创建类,但方法必须是静态的
public static void calculator(Calculator cal){
* 书写配置文件tld
<!-- 确定当前函数 myfn:calculator(cal)-->
<function>
<name>calculator</name>
<function-class>cn.itcast.domain.Calculator</function-class>
<!-- 当前使用函数的声明 public static void calculator(Calculator cal)-->
<function-signature>void calculator(cn.itcast.domain.Calculator)</function-signature>
</function>
* 引用
* <%@ taglib uri="http://www.itcast.cn/mytag/functions" prefix="myfn" %>
* 测试
* ${myfn:calculator(cal)}
四、总结
* 共同点:
* 需要引入
* <%@ taglib uri="http://www.itcast.cn/mytag/myeach" prefix="my" %>
* 都需要配置tld文件
* 区别:
* 自定义标签
* 创建一个类,完成一个功能或一组功能。
* 可以选择el表达式
* 自定义函数
* 创建一个静态方法,完成一个操作。
* 必须与EL表单是结合使用
${fn:xxxx}