`
zqding
  • 浏览: 96064 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

自定义标签

    博客分类:
  • Java
阅读更多

自定义标签:

 

1、实现自定义标签按如下步骤进行:

(1)开发自定义标签处理类:

(2)建立一个*.tld 文件,每个*.tld 文件对应一个标签库,每个标签库对应多个标签:

(3)在web.xml文件中增加自定义标签的定义:

(4)在JSP 文件中使用自定义标签。

 

2、开发自定义标签:

自定义标签类都必须继承一个父类: java.Servlet.jsp.tagext.TagSupport 或者 BodyTagSupport。除此之外,自定义标签类还有如下要求。

·如果标签类包含属性,每个属性都有对应的getter 和setter 方法。

·重写doStartTag()或doEndTag()方法,这两个方法生成页面内容。

·如果需要在销毁标签之前完成资源回收,则重写re1ease()方法。

 

3、开发自定义标签处理类:

 

/**
 * File   : QueryTag.java
 * Author : zqding
 * Date   : 2010-8-13
 * Version:
 * Desc   : 	
 */
package com.starit.tag;

import java.io.Writer;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;

public class QueryTag extends TagSupport {
	private static final long serialVersionUID = 3011647959966821883L;

	// 标签的属性
	private String driver;

	public String getDriver() {
		return driver;
	}

	public void setDriver(String driver) {
		this.driver = driver;
	}

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public String getUser() {
		return user;
	}

	public void setUser(String user) {
		this.user = user;
	}

	public String getPass() {
		return pass;
	}

	public void setPass(String pass) {
		this.pass = pass;
	}

	public String getSql() {
		return sql;
	}

	public void setSql(String sql) {
		this.sql = sql;
	}

	private String url;
	private String user;
	private String pass;
	private String sql;
	// 执行数据库访问的对象
	private Connection conn = null;
	private Statement stmt = null;
	private ResultSet rs = null;
	private ResultSetMetaData rsmd = null;

	@Override
	public int doEndTag() throws JspException {
		try {
			// 注册驱动
			Class.forName(driver);
			// 获取数据库连接
			conn = DriverManager.getConnection(url, user, pass);
			// 创建Statement 对象
			stmt = conn.createStatement();
			// 执行查询
			rs = stmt.executeQuery(sql);
			rsmd = rs.getMetaData();
			// 获取列数目
			int columnCount = rsmd.getColumnCount();
			// 获取页面输出流
			Writer out = pageContext.getOut();
			// 在页面输出表格
			out.write("<table border='1' bgColor='9999cc'>");
			// 遍历结果集
			while (rs.next()) {
				out.write("<tr>");
				// 逐列输出查询到的数据
				for (int i = 1; i <= columnCount; i++) {
					out.write("<td>");
					out.write(rs.getString(i));
					out.write("</td>");
				}
				out.write("</tr>");

			}
		} catch (Exception ex) {
			ex.printStackTrace();
			throw new JspTagException("错误");
		}
		return EVAL_PAGE;
	}

	public void destroy() {
		// 关闭结果集
		if (rs != null)
			try {
				rs.close();
			} catch (SQLException sqle) {
				sqle.printStackTrace();
			}
		// 关闭Statement
		if (stmt != null)
			try {
				stmt.close();
			} catch (SQLException sqle) {
				sqle.printStackTrace();
			}
		// 关闭数据库连接
		if (conn != null)
			try {
				conn.close();
			} catch (SQLException sqle) {
				sqle.printStackTrace();
			}
	}

}

 

4、标签的配置文件配置:

 

<?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-version>1.2</jsp-version>
 <tag>
 	<name>query</name>
 	<tag-class>com.starit.tag.QueryTag</tag-class>
 	<body-content>empty</body-content>
 	
 	<attribute>
 		<name>driver</name>
 		<required>true</required>
 		<rtexprvalue>true</rtexprvalue>
 	</attribute>
 	
 	<attribute>
 		<name>url</name>
 		<required>true</required>
 		<rtexprvalue>true</rtexprvalue>
 	</attribute>
 	
 	<attribute>
 		<name>user</name>
 		<required>true</required>
 		<rtexprvalue>true</rtexprvalue>
 	</attribute>
 	
 	<attribute>
 		<name>pass</name>
 		<required>true</required>
 		<rtexprvalue>true</rtexprvalue>
 	</attribute>
 	
 	<attribute>
 		<name>sql</name>
 		<required>true</required>
 		<rtexprvalue>true</rtexprvalue>
 	</attribute>
 </tag> 
</taglib>

 

5、在web.xml文件中增加自定义标签的定义:

 

	<jsp-config>
		<!--增加自定义标签 -->
		<taglib>
			<!-- 确定标签库的URI-->
			<taglib-uri>/tags/queryTag.tld</taglib-uri>
			<!-- 确定标签库定义文件的位置 -->
			<taglib-location>/WEB-INF/queryTag.tld</taglib-location>
		</taglib>
	</jsp-config>

 

 

 

6、在JSP 文件中使用自定义标签:

...

<!--引入自定义标签-->

<%@ taglib uri="/tags/queryTag.tld" prefix="mytag"%>

....

<!--使用自定义标签-->

<mytag:query user="root" url="jdbc:mysql://localhost:3306/test" pass="root" driver="com.mysql.jdbc.Driver" sql="select * from goods" />

...

分享到:
评论

相关推荐

    mybatis自定义标签.zip

    在实际开发中,有时我们需要根据项目需求实现特定的功能,比如动态生成SQL或者进行复杂的业务逻辑处理,这时MyBatis的自定义标签功能就显得尤为重要。 自定义标签是MyBatis框架的一大特色,它允许我们扩展XML映射...

    struts2 自定义标签

    在Struts2中,自定义标签是提高代码可读性和可维护性的重要工具。本文将深入探讨Struts2自定义标签的实现机制、优点以及如何在实际项目中进行应用。 一、Struts2自定义标签的概念 自定义标签是JSP的一种扩展,允许...

    jsp 自定义标签实例

    在JavaServer Pages (JSP) 技术中,自定义标签是扩展JSP功能的关键手段,它允许开发者创建可重用的组件,提高代码的可维护性和可读性。本实例将深入探讨如何实现一个简单的JSP自定义标签。 首先,自定义标签的实现...

    tp自定义标签

    在ThinkPHP中,自定义标签(Tag Lib)是一种强大的特性,允许开发者扩展模板引擎的功能,使其更符合项目需求。下面将详细解释如何在ThinkPHP 3.0版本中实现自定义标签及其使用方法。 1. **自定义标签的作用** ...

    一个用于分页的自定义标签

    一个“自定义标签”是开发者为了扩展JSP(JavaServer Pages)功能而创建的,它允许我们封装复杂逻辑并将其作为可重用的组件。本项目提供了一个用于分页的自定义标签,适用于那些需要在网页上进行数据分页展示的应用...

    ckeditor4.0自定义标签操作详细步骤及修改后编辑器jar包下载

    本篇文章将详细阐述如何在CKEditor 4.0中进行自定义标签操作,并提供经过修改的编辑器JAR包供下载。 CKEditor 4.0是一款开源的JavaScript富文本编辑器,它支持多种浏览器环境,提供丰富的功能和高度可定制性。...

    jsp2.0 自定义标签和自定标签函数

    在Java Server Pages (JSP) 2.0版本中,自定义标签和自定义标签函数极大地扩展了JSP开发的灵活性和可重用性。这些特性允许开发者创建可复用的组件,使代码更加清晰,易于维护。本文将深入探讨JSP 2.0中的自定义标签...

    spring自定义标签例子

    在Spring框架中,自定义标签是一项非常实用的功能,它允许我们创建符合XML语法的自定义元素,以便在配置文件中更方便地表达业务逻辑。在"spring自定义标签例子"这个项目中,我们可以深入理解这一特性,特别是通过...

    用js实现自定义标签

    本案例通过JavaScript来实现自定义标签的功能。具体而言,它通过遍历文档中的内容,将自定义的标签转换为标准的HTML标签,并应用相应的样式。下面我们将详细介绍其实现细节。 #### 自定义标签代码解析 ```...

    jsp 自定义标签的使用

    在JavaServer Pages (JSP) 技术中,自定义标签是提高代码可重用性和模块化的重要手段。自定义标签允许开发者创建自己的组件,这些组件可以像HTML标签一样在页面上使用,使得代码更加清晰易读。本教程将深入探讨JSP...

    struts实现自定义标签

    在 Struts 中,自定义标签是提供一种灵活的方式,使得视图层(通常为 JSP 页面)能够更好地与业务逻辑交互,从而提高代码的可读性和可维护性。本文将深入探讨如何在 Struts 中实现自定义标签。 一、自定义标签概述 ...

    JSP自定义标签学习笔记

    在JSP(JavaServer Pages)开发中,自定义标签是一种扩展JSP功能的强大工具,它允许开发者创建可重用的代码组件,以提高代码的可读性和可维护性。本篇学习笔记将深入探讨JSP自定义标签的相关概念、创建方法以及实际...

    html自定义标签的使用

    首先,创建自定义标签的目的是为了增加语义化,使网页内容更易于机器理解,同时提高人类阅读的清晰度。例如,可以定义`&lt;article&gt;`、`&lt;sidebar&gt;`等标签来明确内容区块的类型。自定义标签遵循驼峰式命名规则,如`...

    自定义标签,标签实例,ppt

    在Java Web开发中,自定义标签(Custom Tags)是一个强大的工具,它允许开发者创建可重用的组件,提高代码的可读性和维护性。自定义标签是JSP标准标签库(JSTL)的一种扩展,它能将复杂的业务逻辑封装起来,使JSP...

    java自定义标签.......java自定义标签

    Java自定义标签是JavaServer Pages (JSP)技术的一个强大特性,它允许开发者扩展JSP的标准标签库,创建自己的定制化标签,以提高代码的可读性和可维护性。自定义标签可以封装复杂的业务逻辑或者视图呈现,使得页面...

    由浅到深详细讲解JSP自定义标签

    JSP(JavaServer Pages)自定义标签是JSP技术中一个重要的特性,允许开发者创建可重用的、自定义的组件,从而提高代码的可读性和可维护性。本文将深入讲解JSP自定义标签的相关概念、格式、处理过程以及创建和使用...

    jsp权限控制,jsp自定义标签实现

    使用jsp自定义标签的功能实现权限的控制。(如果用户没有某个模块的删除权限,就不现实这个删除按钮) 在整个项目中所有的页面都可以引入自定义的标签去做到权限的控制。 自定义标签文件 删除 可以控制页面中的每...

    Freemarker 自定义标签 简单案例

    在这个"Freemarker自定义标签简单案例"中,我们将深入探讨如何利用Freemarker进行模板设计,并结合自定义标签来增强模板的功能。 首先,让我们理解Freemarker的基础知识。Freemarker是一个与语言无关的模板引擎,它...

    用户自定义标签.

    JSP自定义标签是用户定义的JSP语言元素,可以看成是一种通过标签处理器生成基于XML脚本的方法。自定义标签在功能上和逻辑上都与JavaBean类似,都是一组可重用的组件代码。相较于JavaBean,自定义标签可以使Web开发者...

Global site tag (gtag.js) - Google Analytics