`
wang_zhi_peng2007
  • 浏览: 253922 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

自定义标签使用

阅读更多

自定义标签:

 

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

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

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

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

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

 

2、开发自定义标签:

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

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

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

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

 

 3 .实现数据库连接的自定义标签

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

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;     
    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();   
            }   
    }   
  
    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;   
    }   

  
}  

 (2) 标签的配置文件配置

<?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>  

 

 

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

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

 

(4) 在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" />

 

分享到:
评论

相关推荐

    JSTL 开发自定义标签使用的jar

    3. **在JSP页面中使用自定义标签**:在JSP页面中,你可以通过`&lt;%@ taglib %&gt;`指令引入自定义标签库,并用`&lt;mytag:tagname&gt;`的形式调用自定义标签。 4. **配置Web应用**:确保web.xml文件中配置了对JSTL的支持,包括...

    mybatis自定义标签.zip

    3. **编写XML标签**:接下来,我们可以在Mapper XML文件中使用自定义标签。假设我们要实现一个根据某个字段值决定是否包含某个子查询的功能,可以编写如下的自定义标签: ```xml SELECT * FROM users LEFT ...

    tp自定义标签

    下面将详细解释如何在ThinkPHP 3.0版本中实现自定义标签及其使用方法。 1. **自定义标签的作用** 自定义标签是ThinkPHP模板引擎的扩展,它可以将复杂的业务逻辑或重复的代码块封装起来,提高代码的可读性和复用性...

    jsp 自定义标签的使用

    3. **在JSP页面中使用**:在JSP页面中,通过`&lt;%@ taglib %&gt;`指令引入自定义标签库,然后就可以像使用内置标签一样使用自定义标签了。 二、分页封装 分页是网页应用中常见的需求,通过自定义标签可以方便地实现。...

    html自定义标签的使用

    可以使用`document.querySelector`或`document.querySelectorAll`选择自定义标签,并通过`addEventListener`添加事件处理程序。 5. **语义化**:尽管可以自由创建自定义标签,但应避免过度使用,确保每个标签都有...

    jsp自定义标签大全.rar

    本资源“jsp自定义标签大全”包含了一系列示例和详细教程,涵盖了从基础到高级的自定义标签使用方法,对于想要深入了解和掌握JSP自定义标签的开发者来说是一份宝贵的参考资料。通过学习和实践这些示例,你可以更好地...

    struts2 自定义标签

    开发者可以根据需求,选择使用内置标签或自定义标签,甚至在同一个页面中混合使用,以达到最佳效果。 总之,Struts2自定义标签是提升项目开发效率和代码质量的有效手段。理解并熟练运用自定义标签,可以让开发者更...

    IBM 自定义标签课件

    下面是一个简单的自定义标签使用示例: ```html &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt; ; charset=UTF-8" %&gt; ``` 在这个例子中,`&lt;tl:customTag&gt;` 是一个自定义标签,它被...

    jsp 自定义标签实例

    3. **在JSP页面中使用自定义标签**:在JSP页面中,通过`&lt;jsp:taglib&gt;`指令引入TLD文件,然后就可以像使用内置标签一样使用自定义标签了。例如,`&lt;myTag:myTag attribute1="value1" attribute2="value2"&gt;`。 在给定...

    freemarker 自定义freeMarker标签

    3. 使用自定义标签:在模板文件中,你可以像使用内置标签一样使用你的自定义标签。例如,如果你注册了一个名为`myCustomTag`的自定义指令,你可以在模板中这样使用:`...

    java_自定义标签的使用.docx

    以下是对自定义标签使用及其相关概念的详细解释: 1. **标签处理程序**: 标签处理程序是Java对象,它负责处理自定义标签的逻辑。当JSP容器遇到自定义标签时,会根据标签库描述符(TLD)找到对应的标签处理程序...

    JSP自定义标签示例源码

    在`example.jsp`中,我们可以看到像`&lt;mytags:customTag attribute="value"&gt;`这样的自定义标签使用,其中`mytags`是标签库前缀,`customTag`是标签的本地名称,`attribute`是标签属性。 开发自定义标签时,可能会...

    Struts2自定义分页标签

    3. **配置Struts2**:在struts.xml配置文件中,定义Action和结果类型,确保返回的数据可以被自定义标签使用。 4. **编写自定义标签**:创建JSP标签库,实现分页的展示逻辑。标签需要解析Action返回的PageBean对象,...

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

    本文将深入探讨JSP 2.0中的自定义标签和自定义标签函数,以及如何配置和使用它们。 **一、自定义标签** 自定义标签是JSP中的一种高级特性,它允许开发者创建类似于HTML标签的自定义组件。这种组件可以封装复杂的...

    spring自定义标签例子

    4. **使用自定义标签**:在完成以上步骤后,你就可以在Spring的XML配置文件中像使用标准标签一样使用你的自定义标签了。例如,你可以写入`&lt;my:custom-tag attr1="value1" attr2="value2"/&gt;`。 在"Chapter2"工程中,...

    struts实现自定义标签

    通过引入标签库的 URI,我们可以像使用内置标签一样使用自定义标签。例如: ```jsp ``` 五、自定义标签示例 假设我们有一个自定义标签 `yfk:mytag`,用于显示用户信息。我们可能有以下实现: - 创建 Java 类 `...

    自定义标签的内容及使用

    在使用自定义标签前,我们需要在JSP页面中通过`&lt;%@ taglib&gt;`指令引入标签库,指定URI和前缀。例如: ```jsp ``` 然后在页面中就可以使用定义好的自定义标签,如: ```jsp ``` 自定义标签有多种类型,包括...

    JAVAEE自定义标签的使用

    当你在JSP页面中使用自定义标签时,JSP容器会解析TLD文件,将自定义标签转换为Java代码执行。 创建自定义标签的步骤如下: 1. **定义TLD文件**:TLD文件是自定义标签的核心,它定义了标签的名称、属性、返回类型...

    java中自定义标签的使用方法

    本篇文章将深入讲解Java中自定义标签的使用方法,包括基本概念、创建过程以及实际应用。 首先,我们需要理解自定义标签与标准JSP标签的区别。标准JSP标签如`&lt;jsp:include&gt;`、`&lt;c:if&gt;`等是Java EE提供的一组预定义...

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

    本篇文章将深入探讨自定义标签的概念、工作原理以及如何创建和使用它们。 一、自定义标签概述 自定义标签可以看作是HTML标签的扩展,但它们提供了更丰富的功能和灵活性。通过自定义标签,开发者可以创建具有特定...

Global site tag (gtag.js) - Google Analytics