首页 > 编程 > JSP > 正文

JSP学习笔记__JSP标签库

2024-09-05 00:20:25
字体:
来源:转载
供稿:网友
菜鸟学堂:

  1.jsp标签库(也称自定义库)可看成是一套产生基于xml脚本的方法,它经由javabeans来支持。在概念上说,标签库是非常简单和可以重用的代码构造。它可以大大简化你在页面中输入各种录入框的代码(诸如此类的代码:<input type="text" name="taxpayername" value = " ,<select name="collectionitemcode" class="required" ...),并使之结构化。

  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.*;

//实现tagsupportbodytagsupport接口

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>

 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表