标签库文件是一个标准的xml文件,该文件的根元素是taglib元素,
taglib的三个子元素
1.tlib-version <!-- 标签库的版本号 ,对程序作用不大-->
2.short-name <!-- 标签库默认短名,对程序作用不大-->
3.uri <!-- 指定标签库的唯一标识,非常重要-->
taglib元素下可以有多个tag元素,每一个tag元素定义一个标签
tag元素的子元素
1.name 标签库名,很重要
2.tag-class 指定标签处理类,很重要
3.body-content 指定标签体的内容 ,很重要,该元素的值可以有以下几个
1.tagdependent:指定标签处理类自己负责处理标签体
2.empty:指定该标签只能作为空标签使用
3.scriptless:指定该标签体可以是静态html元素,表达式语言,但不允许出现jsp脚本
4.jsp:指定标签可以使用jsp脚本
5.dynamic-attribute:指定标签是否支持动态属性。只有当定义动态属性标签时才需要该子元素
带属性的标签定义,需要在tag元素添加子元素<attribute../>,该元素有以下几个子元素
1.name:设置属性名,子元素的值是字符串内容
2.required:设置该属性是否为必须属性,true或false
3.fragment:设置该属性是否支持jsp脚本,表达式语言等动态内容,true或false
1.编写标签实现类
<1>.从SimpleTagSupport类继承
<2>.重写doTag方法,实现在网页上的输出
2.在WEB-INF目录下,或WEB-INF的子目录下建立helloworld.tld文件,即自定义标签的说明文件
3.建立没有带属性标签HelloTag
注意:1.标签处理必须置于包中,不能是裸体类
2.不需要像jsp中修改WEB.xml
<--------------------------------------------------------------------------->
example:
新建HelloTag.java并重写它的doTag方法存放在mytag包中
package mytag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public class HelloTag extends SimpleTagSupport {
public void doTag() throws JspException, IOException {
this.getJspContext().getOut().write("HelloWorld!"+"<br>");
}
}
<----------------------------------------------------------------------------------------->
新建一个jsp测试文件TestTag.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<!-- uri是用来寻找tld文件的 -->
<%@ taglib uri="/HW" prefix="mytag" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<mytag:helloworld/>
</body>
</html>
<------------------------------------------------------------------------------------------->
再建一个相对应的tld文件helloworld.tld
<?xml version="1.0" encoding="GB18030" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-
jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>2.0</tlib-version>
<short-name>mytag</short-name>
<uri>/HW</uri>
<tag>
<name>helloworld</name>
<tag-class>mytag.HelloTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
<!--------------------定义带标签体的标签 start----------------------------->
1.新建标签处理类JspTag.java
package com.util;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public class JspTag extends SimpleTagSupport{
private int sum;
@Override
public void doTag() throws JspException, IOException {
for(int i=0;i<=sum;i++){
getJspContext().setAttribute("count", String.valueOf(i+1));
getJspBody().invoke(null);//获取得标签体中的内容并输出(jsp页面调用这个标签时,使用的${count},
//也就是说获取${count}的值并输出 )
}
}
public int getSum() {
return sum;
}
public void setSum(int sum) {
this.sum = sum;
}
}
2.新建标签文件Michael.tld
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<!-- 标签库的版本号 -->
<tlib-version>1.0</tlib-version>
<!-- 标签库的默认前缀 -->
<short-name>michael</short-name>
<!-- 标签库的默认URI -->
<uri>/eportal</uri>
<!-- 商品类别列表标签 -->
<tag>
<description>计数</description>
<name>michael</name>
<tag-class>com.util.JspTag</tag-class>
<body-content>scriptless</body-content>
<attribute>
<description>1-最新商品类别列表,2-促销商品类别列表,默认值为1</description>
<name>sum</name>
<required>false</required>
<!-- 可以使用JSP表达式 -->
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
3.新建调用标签的jsp文件test.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="mi" uri="/eportal" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<form action="test.action" method="post">
年龄:<input type=text name=age>
<input type=submit name=subm value="查询">
</form>
<mi:michael sum="5">
${count}
</mi:michael>
</body>
</html>
<!--------------------定义带标签体的标签 end----------------------------->
<!-------------------定义带属性的标签 start------------------------------------>
1.新建标签处理类JspTag2.java
package com.util;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public class JspTag2 extends SimpleTagSupport{
private int sum;
@Override
public void doTag() throws JspException, IOException {
for(int i=0;i<=sum;i++){
getJspContext().getOut().write("A"+String.valueOf(i)+" ");
}
}
public int getSum() {
return sum;
}
public void setSum(int sum) {
this.sum = sum;
}
}
2.新建标签文件Michael.tld
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<!-- 标签库的版本号 -->
<tlib-version>1.0</tlib-version>
<!-- 标签库的默认前缀 -->
<short-name>michael</short-name>
<!-- 标签库的默认URI -->
<uri>/eportal</uri>
<!-- 商品类别列表标签 -->
<tag>
<description>计数</description>
<name>john</name>
<tag-class>com.util.JspTag2</tag-class>
<body-content>scriptless</body-content>
<attribute>
<description>1-最新商品类别列表,2-促销商品类别列表,默认值为1</description>
<name>sum</name>
<required>false</required>
<!-- 可以使用JSP表达式 -->
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
3.新建调用标签的jsp文件test.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="mi" uri="/eportal" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<form action="test.action" method="post">
年龄:<input type=text name=age>
<input type=submit name=subm value="查询">
</form>
<mi:john sum="5"/>
</body>
</html>
相关推荐
JSP自定义标签JSP自定义标签JSP自定义标签JSP自定义标签JSP自定义标签JSP自定义标签
本人自行研究JSP自定义标签的学习笔记 目录如下: 目录 一、概述 1 1.1 使用简单标签机制 2 1.2 使用标签文件 3 二 、自定义标签简介 3 2.1 自定义标签概念 3 2.2 标签相关概念 3 2.3 如何创建自定义标签 3 三、自...
jsp 自定义标签 一个简单的自定义标签实现
jsp自定义标签jsp自定义标签jsp自定义标签
在网上学习jsp自定义标签的时候, 出现了异常, 在网上寻找了好久, 都没有找到合适的答案, 自己通过摸索最后成功, 分享给大家, 希望能够帮助到你, 自定义标签不能放在java Project中, 只能在java web Project中才可以.
jsp自定义标签jsp自定义标签jsp自定义标签jsp自定义标签
使用jsp自定义标签的功能实现权限的控制。(如果用户没有某个模块的删除权限,就不现实这个删除按钮) 在整个项目中所有的页面都可以引入自定义的标签去做到权限的控制。 自定义标签文件 删除 可以控制页面中的每...
jsp自定义标签库实现数据列表显示,包括代码,文档,希望对大家有帮助.
jsp自定义标签例子,能在Tomcat下直接运行 具体讲解参考 http://blog.csdn.net/zwhfyy/archive/2008/06/13/2543904.aspx
权威实用的jsp自定义标签demo,checkbox,radio> 导入eclipse 部署 看效果吧 带源代码哦
是用jsp自定义标签编写的一个非常不错的分页,扩展性非常不错,不依赖于数据库。
JSP自定义标签。在自定义标签的起始和结束标签之间的部分为标签体(Body)。 标签处理程序类:定义标签的行为,并在JSP引擎遇到自定义标签时调用执行。 标签库描述符(TLD)文件:描述标签库的XML文档,向JSP引擎...
jsp初学者实例,以及分页封装,下拉框绑定值封装
java jsp自定义标签非常好用大家下载学习java jsp自定义标签非常好用大家下载学习java jsp自定义标签非常好用大家下载学习java jsp自定义标签非常好用大家下载学习java jsp自定义标签非常好用大家下载学习java jsp...
创建JSP自定义标签.doc 创建JSP自定义标签.doc 创建JSP自定义标签.doc