首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

自定义标签运用

2012-10-28 
自定义标签使用自定义标签:?1、实现自定义标签按如下步骤进行:??? (1)开发自定义标签处理类:??? (2)建立一

自定义标签使用

自定义标签:

?

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" />

?

热点排行