Javaweb自定义标签 tld版本
2016-01-25 21:21
417 查看
1.tld文件的格式
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<!--定义标签版本库-->
<tlib-version>1.0</tlib-version>
<!--定义jsp版本库-->
<jsp-version>1.2</jsp-version>
<short-name>mytld</short-name>
<uri>http://mytags.sf.net</uri>
<description>这是我的自定义标签</description><!--标签描述--->
<tag>
<!--tag的名字 作用 <mytag:wl ></mytag:wl > -->
<name>wl</name>
<!--tag对应的java类的名字-->
<tag-class>com.core.base.util.tld.Tld_test</tag-class>
<!--关于body-content 有三个值可选;empty:标签体必须为空;jsp:标签由其他jsp元素组成比如标签中含有<%=attributeName%>的jsp元素,那么此时body-content的值就是实际attributeName传入的值;tagdependent:有标签解释不带jsp转换(这个深入的含义不太了解)-->
<body-content>jsp</body-content>
在web.xml中加入taglib对应文件配置
<!---这里表示的是这个tag的一个参数-->
<attribute>
<!--这个参数的名字-->
<name>message</name>
<!--是否是必填选项-->
<required>true</required>
<!--这个参数的值是否可以写入,换句话说 就是这个参数是否可以动态赋值-->
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
2.定义Tag对应类
此类必须重写doStartTag以及doEndTag方法
package com.core.base.util.tld;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
public class Tld_test extends TagSupport{
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
@Override
public int doStartTag() throws JspException {
// TODO Auto-generated method stub
System.out.println("开始tag");
return super.doStartTag();
}
@Override
public int doAfterBody() throws JspException {
// TODO Auto-generated method stub
System.out.println("执行doAfterBody()");
return super.doAfterBody();
}
@Override
public int doEndTag() throws JspException {
// TODO Auto-generated method stub
JspWriter jspWriter = pageContext.getOut();
try {
jspWriter.print("这是我的第一个tag"+message);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("tag结束");
return super.doEndTag();
}
}
SKIP_BODY (0) :跳过了开始和结束标签之间的代码。
EVAL_BODY_INCLUDE(1):将body的内容输出到存在的输出流中
SKIP_PAGE(5): 忽略剩下的页面。
EVAL_PAGE隐含(6):继续执行下面的页
3.在web.xml中加入taglib对应文件配置
ervelet2.4以后tld文件不需要在web.xml中配置
项目中用到自定义的标签文件,但是却在web.xml中没有看到相关的标签配置,原来如果web应用使用servelet2.4以上的版本就不需要在web.xml中定义了,servelet会自动加载tld文件,有两种方式使用自动加载
1、打成jar包时,将tld文件放在META-INF文件夹下(参考standard,jar)
2、直接将自定义tld文件放在WEB-INF下
4.在jsp中使用自定义标签
<%@ taglib uri="http://mytags.sf.net" prefix="mytag" %>
<mytag:wl message="恭喜您"></mytag:wl>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<!--定义标签版本库-->
<tlib-version>1.0</tlib-version>
<!--定义jsp版本库-->
<jsp-version>1.2</jsp-version>
<short-name>mytld</short-name>
<uri>http://mytags.sf.net</uri>
<description>这是我的自定义标签</description><!--标签描述--->
<tag>
<!--tag的名字 作用 <mytag:wl ></mytag:wl > -->
<name>wl</name>
<!--tag对应的java类的名字-->
<tag-class>com.core.base.util.tld.Tld_test</tag-class>
<!--关于body-content 有三个值可选;empty:标签体必须为空;jsp:标签由其他jsp元素组成比如标签中含有<%=attributeName%>的jsp元素,那么此时body-content的值就是实际attributeName传入的值;tagdependent:有标签解释不带jsp转换(这个深入的含义不太了解)-->
<body-content>jsp</body-content>
在web.xml中加入taglib对应文件配置
<!---这里表示的是这个tag的一个参数-->
<attribute>
<!--这个参数的名字-->
<name>message</name>
<!--是否是必填选项-->
<required>true</required>
<!--这个参数的值是否可以写入,换句话说 就是这个参数是否可以动态赋值-->
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
2.定义Tag对应类
此类必须重写doStartTag以及doEndTag方法
package com.core.base.util.tld;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
public class Tld_test extends TagSupport{
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
@Override
public int doStartTag() throws JspException {
// TODO Auto-generated method stub
System.out.println("开始tag");
return super.doStartTag();
}
@Override
public int doAfterBody() throws JspException {
// TODO Auto-generated method stub
System.out.println("执行doAfterBody()");
return super.doAfterBody();
}
@Override
public int doEndTag() throws JspException {
// TODO Auto-generated method stub
JspWriter jspWriter = pageContext.getOut();
try {
jspWriter.print("这是我的第一个tag"+message);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("tag结束");
return super.doEndTag();
}
}
SKIP_BODY (0) :跳过了开始和结束标签之间的代码。
EVAL_BODY_INCLUDE(1):将body的内容输出到存在的输出流中
SKIP_PAGE(5): 忽略剩下的页面。
EVAL_PAGE隐含(6):继续执行下面的页
3.在web.xml中加入taglib对应文件配置
ervelet2.4以后tld文件不需要在web.xml中配置
项目中用到自定义的标签文件,但是却在web.xml中没有看到相关的标签配置,原来如果web应用使用servelet2.4以上的版本就不需要在web.xml中定义了,servelet会自动加载tld文件,有两种方式使用自动加载
1、打成jar包时,将tld文件放在META-INF文件夹下(参考standard,jar)
2、直接将自定义tld文件放在WEB-INF下
4.在jsp中使用自定义标签
<%@ taglib uri="http://mytags.sf.net" prefix="mytag" %>
<mytag:wl message="恭喜您"></mytag:wl>
相关文章推荐
- 表格标签table深入了解
- WEB标准网页布局中尽量不要使用的HTML标签
- 如何使用jquery easyui创建标签组件
- web标准知识――用途相似的标签
- h1标签的使用技巧
- 探讨JavaScript标签位置的存放与功能有无关系
- HTML代码中标签的全部属性 中文注释说明
- Bootstrap每天必学之标签与徽章
- jQuery EasyUI 布局之动态添加tabs标签页
- jQuery+CSS实现滑动的标签分栏切换效果
- jquery 实现两Select 标签项互调示例代码
- 详解jQuery Mobile自定义标签
- jQuery获取标签文本内容和html内容的方法
- JavaScript获取并更改input标签name属性的方法
- css样式标签和js语法属性区别
- JSP自定义标签入门学习
- JSP中param标签用法实例分析
- jsp之c标签用法实例分析
- 关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
- jQuery如何获取同一个类标签的所有值(默认无法获取)