JavaWeb---用户自定义标签
来源:互联网 发布:sql将a表数据复制到b表 编辑:程序博客网 时间:2024/06/03 17:01
1. 什么是用户自定义标签?
Ø JSP自定义标签是用户定义的JSP语言元素,可以看成是一种通过标签处理器生成基于XML脚本的方法。
Ø 自定义标签在功能上和逻辑上都与JavaBean类似,都是一组可重用的组件代码。
相较于JavaBean,自定义标签可以使Web开发者可以完全从Java编程中脱离开来,专注于页面显示和格式上面去,所以具有广阔的发展前景
2. 自定义标签的优点是什么?
分离了程序逻辑和表示逻辑
将Java代码从HTML中剥离,便于美工维护页面
减少了JSP页面中的脚本,减少了维护成本
提供了可重用的功能组件
3. 自定义标签的组成:
一个自定义标签一般由JavaBean、标签库描述、标签处理器、web.xml文件配置、标签库声明等元素所构成
4. 自定义标签的作用:
JavaBean -à标签库用来执行所分配微软的基本代码模块
标签库描述-àxml文件记录标签处理器属性信息和位置信息
标签处理器-à标签库核心,对外部资源和访问信息进行处理
web.xml文件配置-à配置文件用来描述自定义标签TLD文件位置
标签库声明-à使用自定义表情,使用标签库指令进行声明
5. 自定义标签的声明:
<%@ taglib prefix="pre"uri="URLToTagLibrary"%>
无论JSP页面中的自定义标签出现在什么位置,taglib指令都必须出现在页面的前端位置
6. 标签库表述符文件:
Ø 标签库描述符(TLD文件)是一个描述标签库的XML文档。TLD包含有关整个库以及库中包含的每一个标签的信息。它把自定义标签与对应的处理程序关联起来。TLD文件名称必须扩展名为.tld。
Ø TLD文件存储在Web模块的WEB-INF目录下或者子目录下,并且一个标签库要对应一个标签库描述文件,而在一个描述文件中可以包含多个自定义标签的声明。
TLD文件的根元素是<taglib>,该元素的子元素如下所示:
元素
说明
元素
说明
<tlib-version>
用于设置标签库版本
<small-icon>
用于设置标签库的可选小图标
<jsp-version>
用于设置标签库要求的JSP规范版本
<large-icon>
用于设置标签库的可选大图标
<short-name>
用于设置该标签库的助记名
<description>
用于设置标签库的描述信息
<uri>
唯一标识该标签库的URI
<listener>
用于设置标签库的监听器类
<display-name>
用于设置标签库显示的可选名
<tag>
用于设置标签库的具体标签
7. <tag>元素的方法:
<tag>元素是真正用来查找标签库中具体标签的
元素
说明
元素
说明
<name>
用于设置标签的唯一名称
<small-icon>
用于设置标签的可选小图标
<tag-class>
用于设置标签处理器的完全限定名
<large-icon>
用于设置标签的可选大图标
<tei-class>
用于设置脚本变量信息的子类名称
<description>
用于设置标签的描述信息
<body-content>
用于设置标签的正文内容类型
<variable>
用于设置标签的脚本变量信息
<display-name>
用于设置标签显示的可选名
<attribute>
用于设置标签的属性信息
8. 标签处理器:
Ø 在标签处理器中定义了标签处理方法doStartTag()和doEndTag(),这两个方法分别在标签开始和结束时执行处理和输出动作。
Ø 这两个方法都要求分别返回一个状态码,通知JSP容器岁自定义标签的处理结果及整个JSP页面的运行状态。
状态码一共有四种,具体作用如下所示:
状态码
作用说明
EVAL_BODY_INCLUDE
当doStartTag()返回时,指明servlet应对标签进行评估
SKIP_BODY
当doStartTag()返回时,指明servlet应忽视标签体
EVAL_PAGE
当doEndTag()返回时,指明页面其余部分应被评估
SKIP_PAGE
当doEndTag()返回时,指明页面其余部分就被跳过
9. 简单格式的标签开发:
Ø 简单格式的标签没有属性和体,它需要实现Tag接口中的doStartTag()和doEndTag()方法。
Ø 当Web容器遇到开始标签时会自动调用doStartTag()方法。由于简单格式的标签没有体,所以这个方法会直接返回一个SKIP_BODY。
Ø 在遇到结束标签的时候会调用doEndTag()方法。如果还需要页面中的其他部分进行判断,则doEndTag()方法会返回EVAL_PAGE,否则,会返回SKIP_PAGE。
10. 实现自定义标签:
package com.msit.tag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
/**
* 定义第一个输出内容的自定义标签处理类
* @authoradmin
*
*/
@SuppressWarnings("serial")
publicclassMytagPrintextendsTagSupport {
@Override
publicint doStartTag()throws JspException {
//创建页面输出对象
JspWriterout = pageContext.getOut();
try {
out.print("这是第一个自定义输出");
}catch(IOException e) {
e.printStackTrace();
}
returnSKIP_BODY;//skip跳过或忽略
}
@Override
publicint doEndTag()throws JspException {
returnEVAL_PAGE;//eval 评估或处理
}
}
Web文件配置:
<jsp-config>
<taglib>
<taglib-uri>/msit/myprint</taglib-uri>
<taglib-location>/WEB-INF/Myprint.tld</taglib-location>
</taglib>
</jsp-config>
Tld文件配置
<short-name>pt</short-name>
<uri>/myprint</uri>
<tag>
<name>myprint</name>
<tag-class>com.msit.tag.MytagPrint</tag-class>
<body-content>empty</body-content>
</tag>
在页面输出:
<%@ taglib uri="/msit/myprint"prefix="p" %>
调用自定义标签:<br>
<p:myprint/>
- JavaWeb---用户自定义标签
- javaweb jsp自定义标签
- JavaWeb-自定义标签
- javaweb 自定义标签
- javaWeb之自定义标签
- JavaWeb自定义标签
- javaWeb---自定义标签
- javaweb 自定义标签
- Javaweb自定义标签 tld版本
- JavaWeb----自定义标签的开发
- JavaWeb---自定义标签的步骤
- JavaWeb之JSP自定义标签
- JavaWeb学习十二(自定义标签)
- JavaWeb之 JSP:自定义标签
- 用户自定义标签
- 用户自定义标签
- JavaWeb 自定义标签&EL自定义函数
- JavaWeb-自定义标签、传统标签和简单标签
- MTK6515 android打版软件配置(DrvGen.exe 使用)
- python+selenium 生成测试报告
- 减肥的最佳年龄
- 与NULL 有关的几个函数
- poj3233 Matrix Power Series,矩阵快速幂
- JavaWeb---用户自定义标签
- JavaWeb---自定义带参参数
- poj_2828线段树,逆序插入
- 十:申请微信公众号和搭建SAE网上服务器
- HdU 4046 Panda 线段树
- HDOJ 3530 Subsequence(单调队列(含单调队列详解))
- Android OpenGL ES 开发教程(15):通用的矩阵变换指令
- win7系统下Python、Numpy、NLTK、Matplotlib等的安装【python自然语言处理所需
- Codeforces Round #260 (Div. 2) B. Fedya and Maths