Web开发之-JSP学习总结-第四篇:自定义标签总结
2016-07-22 13:58
579 查看
一、自定义标签开发步骤—以高仿<c:if test=""></c:if>
标签为例
1、编写一个普通的java类,继承SimpleTagSupport类,叫标签处理器类。并且覆盖doTag方法/** * 标签处理器类 * 1)继承SimpleTagSupport */ public class IfTag extends SimpleTagSupport { private boolean test; public void setTest(boolean test) { this.test = test; } /** * 2)覆盖doTag方法 */ @Override public void doTag() throws JspException, IOException { //根据test的返回值决定是否输出标签体内容 if(test){ this.getJspBody().invoke(null); } } }
2、在web项目的WEB-INF目录下建立xxx.tld文件,这个tld叫标签库的声明文件。(参考核心标签库的tld文件)
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <!-- 标签库的版本 --> <tlib-version>1.1</tlib-version> <!-- 标签库前缀 --> <short-name>lwb</short-name> <!-- tld文件的唯一标记 --> <uri>http://blog.csdn.net/learning_lu</uri> <!-- 一个标签的声明 --> <tag> <!-- 标签名称 --> <name>if</name> <!-- 标签处理类的全名 --> <tag-class>lwb.tag.IfTag</tag-class> <!-- 输出标签体的内容格式 --> <body-content>scriptless</body-content> <!-- 属性声明 --> <attribute> <name>test</name> <!-- 是否必填 --> <required>true</required> <!-- 是否支持EL表达式 --> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
3、在jsp页面的头部导入自定义标签库
<%@taglib uri="http://blog.csdn.net/learning_lu" prefix="lwb"%>
4、在jsp中使用自定义标签
<itcast:if test="${2}"> 条件成立 </itcast:if>
二、自定义标签的执行过程
tomcat服务器启动时,加载到每个web应用,加载每个web应用的WEB-INF目录下的所有文件!!!例如。web.xml, tld文件!!!1、访问XXX.jsp资源
2、tomcat服务器把jsp文件翻译成java源文件->编译class->构造类对象->调用_jspService()方法
3、检查jsp文件的taglib指令,是否存在一个名为http://blog.csdn.net/learning_lu的tld文件。如果没有,则报错
4、上一步已经读到xxx.tld文件(自定义标签库文件)
5、读到
<lwb:if test="">到xxx.tld文件中查询是否存在
<name>为if的
这里写<tag>标签
6、找到对应的
<tag>标签,则读到
<tag-class>片内容
7、得到 lwb.tag.IfTag
构造ShowIpTag对象,然后调用IfTag里面的方法
三、自定义标签处理器类的生命周期
SimpleTag接口:void setJspContext(JspContext pc) --设置pageContext对象,传入pageContext(一定调用)、通过getJspCotext()方法得到pageContext对象 void setParent(JspTag parent) --设置父标签对象,传入父标签对象,如果没有父标签,则不调用此方法。通过getParent()方法得到父标签对象。 void setXXX(值) --设置属性值。 void setJspBody(JspFragment jspBody) --设置标签体内容。标签体内容封装到JspFragment对象中,然后传入JspFragment对象。 通过getJspBody()方法得到标签体内容。如果没有标签体内容,则不会调用此方法 void doTag() --执行标签时调用的方法。(一定调用)
四、自定义标签的作用
1)控制标签体内容是否输出 2)控制标签余下内容是否输出 3)控制重复输出标签体内容 4)改变标签体内容 5)带属性的标签
相关文章推荐
- 表格标签table深入了解
- WEB标准网页布局中尽量不要使用的HTML标签
- 如何使用jquery easyui创建标签组件
- web标准知识――用途相似的标签
- h1标签的使用技巧
- 探讨JavaScript标签位置的存放与功能有无关系
- HTML代码中标签的全部属性 中文注释说明
- 第九章之路径分页标签与徽章组件
- javascript实现label标签跳出循环操作
- Bootstrap每天必学之标签与徽章
- jQuery EasyUI 布局之动态添加tabs标签页
- jQuery+CSS实现滑动的标签分栏切换效果
- jquery 实现两Select 标签项互调示例代码
- 详解jQuery Mobile自定义标签
- jQuery获取标签文本内容和html内容的方法
- JavaScript获取并更改input标签name属性的方法
- css样式标签和js语法属性区别
- JSP自定义标签入门学习
- JSP中param标签用法实例分析
- jsp之c标签用法实例分析