JSP学习笔记--JSP标签库
2005-03-11 21:07
274 查看
原文地址:http://www.7880.com/Info/Article-461b6340.html
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.一个简单的标签由下面的元素构成:
⑴ JavaBeans:为了得到Java与生具来的面向对象的好处,可重用的代码应该放到一个独立的代码容器中。这些JavaBeans并不是标签库的一部分。不过它是你的代码库用来执行相关任务的基本代码块。
⑵ 标签处理:这是标签库的真正核心。一个标签处理器将引用它需要的任何资源(你的JavaBeans)和访问你的JSP页面的全部信息(pageContext对象)。JSP页面也会将所有已经被设置的标签属性和JSP页面上的标签体中的内容传送给标签处理器。在标签处理器处理完毕后,它将发回输出到你的JSP页面进行处理。
⑶ 标签库的描述(tld文件):这是一个简单的XML文件,它记录着标签处理器的属性、信息和位置。JSP容器通过这个文件来得知从哪里及如何调用一个标签库。
⑷ 网站的web.xml文件:这是你网站的初始化文件,在这个文件中,你定义了网站中用到的自定义标签,以及哪个tld文件用来描述每个自定义的标签。
⑸ 分发文件(一个WAR或者JAR文件):如果你想重用自定义标签的话,你需要一个方法来将它由一个项目转移到另一个项目中。将标签库打包为一个JAR文件是一个简单而且有效的方式。
⑹ 在你的JSP文件中作标签库声明:很简单,如果要用到该标签的话,只要在页面声明一下就可以,其后,你就可以在该JSP页面的任何地方使用它。
下面是一个实例
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>
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.一个简单的标签由下面的元素构成:
⑴ JavaBeans:为了得到Java与生具来的面向对象的好处,可重用的代码应该放到一个独立的代码容器中。这些JavaBeans并不是标签库的一部分。不过它是你的代码库用来执行相关任务的基本代码块。
⑵ 标签处理:这是标签库的真正核心。一个标签处理器将引用它需要的任何资源(你的JavaBeans)和访问你的JSP页面的全部信息(pageContext对象)。JSP页面也会将所有已经被设置的标签属性和JSP页面上的标签体中的内容传送给标签处理器。在标签处理器处理完毕后,它将发回输出到你的JSP页面进行处理。
⑶ 标签库的描述(tld文件):这是一个简单的XML文件,它记录着标签处理器的属性、信息和位置。JSP容器通过这个文件来得知从哪里及如何调用一个标签库。
⑷ 网站的web.xml文件:这是你网站的初始化文件,在这个文件中,你定义了网站中用到的自定义标签,以及哪个tld文件用来描述每个自定义的标签。
⑸ 分发文件(一个WAR或者JAR文件):如果你想重用自定义标签的话,你需要一个方法来将它由一个项目转移到另一个项目中。将标签库打包为一个JAR文件是一个简单而且有效的方式。
⑹ 在你的JSP文件中作标签库声明:很简单,如果要用到该标签的话,只要在页面声明一下就可以,其后,你就可以在该JSP页面的任何地方使用它。
下面是一个实例
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>
相关文章推荐
- JSP 学习笔记(内建对象)
- J2EE学习笔记之JSP内置对象
- JSP&&SERVLET学习笔记(一):HelloServlet
- JAVAWeb之JSP学习笔记一
- JSP&Servlet学习笔记(二)
- JSP学习笔记(一)
- [原创]java WEB学习笔记36:Java Bean 概述,及在JSP 中的使用,原理
- JSP&Servlet学习笔记(6): 监听器
- jsp学习笔记(三)
- JSP学习笔记
- jsp servlet 学习笔记概要--from《圣思园视频》
- Servlet与Jsp学习笔记--4、Session
- JSP基础复习学习笔记
- JSP的八个内置对象-学习笔记
- jsp学习笔记--内置对象
- JSP学习笔记(2)——JSP语法
- JSP / GSP 标签库-Shiro权限学习1
- JSP学习笔记(四)-----JSP动作的使用
- JSP学习笔记(5)-Java Servlet
- jsp学习笔记一