| JSP学习笔记(九)-----JSP标签库 |
| 日期:2006-2-3 20:26:17 人气: [大 中 小] |
1.JSP标签库(也称自定义库)可看成是一套产生基于XML脚本的方法,它经由JavaBeans来支持。在概念上说,标签库是非常简单和可以重用的代码构造。它可以大大简化你在页面中输入各种录入框的代码(诸如此类的代码:<input type="text" name="taxpayerName" value = " ,<select name="collectionItemCode" class="required" style="width:200" ...),并使之结构化。 2.标签库(Tag libraries)提供了建立可重用代码块的简单方式。但是和COM和J2EE不同的是,你不需要掌握任何额外的技能就可以建立标签库:如果你会编写JSP页面,你就会建立标签库。最后,标签库还改进了Web应用程序的维护性。这种对维护性的改进表现在:轻易地在JSP页面上就实现了基于XML的可定制接口。 3.一个简单的标签由下面的元素构成:
下面是一个实例 1. 先编写标签处理程序,ATMTag.java //用标签处理程序来定义客户标签的工作
import javax.servlet.jsp.*; //导入标签类的驱动 import javax.servlet.jsp.tagext.*; import java.io.*; import java.sql.*; import java.math.*; import java.util.*; //实现TagSupport或BodyTagSupport接口 public class ATMTag extends TagSupport { Connection connect = null; Statement state = null; ResultSet result = null; public ATMTag() throws ClassNotFoundException { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } //抽象类Tag的方法,标签处理程序的初始化 public int doStartTag() throws JspTagException { //指导JSP引擎处理标签的体内容 return EVAL_BODY_INCLUDE; }
//执行标签任务 public int doEndTag() throws JspTagException { try { //把输出写到JSP页面 JspWriter out=pageContext.getOut();
connect=DriverManager.getConnection("jdbc:odbc:test","sa","");
String strQuery = " Select cCounter_id, cAddress,mCashBalance from Counter where mCashBalance<=10000; " ; System.out.println("Query: "+strQuery); state = connect.createStatement(); ResultSet result = state.executeQuery(strQuery); String sId=null; String sAddress=null; String sBalance=null; Vector v=new Vector(); while(result.next()) {
sId = result.getString(1); sAddress = result.getString(2); sBalance = result.getString(3); v.add(sId); v.add(sAddress); v.add(sBalance); v.add(";");
} for(int i=0;i<v.size();i++) { String str=(String)v.elementAt(i); pageContext.getOut().write(str); } }catch(Exception ioe) { System.out.println(" Error in getting results"+ioe.toString()); } //指出对JSP页面其余部分求值 return EVAL_PAGE; }
}
2. 编写TLD文件的代码: //XML验证文档 <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> <taglib> //标签库版本 <tlibversion>1.0</tlibversion> //标签库依赖的JSP版本 <jspversion>1.1</jspversion> //标签库名 <shortname>ATMjsp</shortname> //关于标签库的详细信息 <info>A Tag library</info> <tag> //定义标签的名 <name>ATM</name> //指出标签处理程序类 <tagclass>ATMTag</tagclass> //此标签体的定义 <body-content>JSP</body-content> //关于此标签与其功能的附加信息 <info>Outputs of the ATM counter</info> </tag> </taglib>
3. 错误页面errorpage.jsp的代码: <html> <body> <%@ page isErrorPage="true" %> <%=exception.getMessage() %> </body> </html>
4. 编写JSP文件:ATM.jsp <%@ page import="ATMTag" %> <%@ taglib uri="ATMjsp.tld" prefix="ATMjsp" %> <%@ page errorPage="errorpage.jsp" %> <!DocType HTML Public "-//W3C//DTD HTML 4.0 Translational//EN "> <html> <h3 align=center>ATM counters that needs Cash</h3> <table> <tr><td></td><td><ATMjsp:ATM/></td></tr> </table> </html>
|
| 出处:CnCode转载收集 作者:不详 |
