由Sun等多家公司推出的JSP动态网页技术已经广泛流行。它继承了Java的跨平台、可移植、高性能等特点,使得在功能和安全性能上都优于Microsoft公司的ASP。很多JSP程序设计者在使用JSP进行动态网站开发时,认识到使用JavaBean技术进行功能封装的重要性,但是却忽视了Tag Library这一关键技术的使用。众所周知,HTML语言就是一种纯标记语言,如果要实现设置“Hello”为红色字体的功能,只需用<font color="red">Hello</font>就可以了。那么,<font>就是一个典型的标记,color是它的属性。现在,假设想要通过类似的标记方法来实现Email的发送,也要定义一个<sendmail 属性>......</sendmail>的标记,然后就可以用<sendmail ……>lzwasp@263.net</sendmail>把一封信发到lzwasp@263.net信箱中了。 Tag Library指的就是关于<sendmai>这类标记的标记库。它类似于函数库或组件,但又有别于这两者,因为它将功能用一种标记和标记中的属性来表达实现。Tag Library是XML技术与JSP结合的产物,主要体现在用标记(Tag)来表达和实现想要实现的功能。目前,大多数的JSP服务提供商开发的JSP引擎都支持Tag Library技术,比如著名的Apache组织的Tomcat、IBM公司的WebSphere、BEA公司的WebLogic等都是很典型的JSP服务平台。不仅如此,这些引擎还开发扩展了很多出色的Tag,封装成Tag Library,方便开发者的调用。Allaire公司推出的JRun在这些服务平台中一枝独秀。它具备良好的性能,同时还提供了自带的Tag Library,即Jruntags。Jruntags可以实现动态网页设计中诸多重要功能,如数据库连接和操作、电子邮件的送取等。下面以一实例介绍在JRun平台上如何应用Jruntags来增强动态网页的开发,提高开发效率。
应用实例
本文实例主要是让学生在线查看课程目录,并进行网上选课,以计算机处理的方式增强统计、分类,减少人为操作的复杂性。
数据库表
用Access建一个数据库test.mdb,并在ODBC中创建一个名为db的数据源名,使其指向test.mdb数据库,使用JDBC-ODBC Bridge进行数据库连接。其中,数据库test.mdb内有subject_tb 和stu_sub_tb两张表,表结构如下。
subject表:
字段 类型、长度 字段 类型、长度
课程号 Char(3) 课程名 Char(20)
教师 Char(10) 简介 Char(50)
Stu_sub_tb表:
字段 类型、长度 字段 类型、长度
学号 Char(7) 课程号 Char(3)
部分程序代码:
inc.jsp
<%@ page import="java.sql.*,allaire.taglib.*" %>
<%
String xh = request.getParameter("t2");
String subID = request.getParameter("t1");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
Connection con = DriverManager.getConnection("jdbc:odbc:db");
%>
select_sub.jsp
<%@ page contentType="text/html;charset=gb2312" %>
<%@ taglib uri="Jruntags" prefix="jrun" %>
<%@ include file="inc.jsp"%>
<jrun:if expr="<%= xh != null && subID != null %>">
<jrun:sql connection="<%= con %>">
INSERT INTO stu_sub_tb (学号,课程号)
VALUES (
<jrun:sqlparam value="<%=xh %>"/>,
<jrun:sqlparam value="<%=subID %>"/>)
</jrun:sql>
您己经选修了课程号为<font color="red"><b>[<%=subID%>]</b></font>的课程。
</jrun:if>
<jrun:sql connection="<%= con %>" id="rs">
SELECT * FROM subject_tb
</jrun:sql>
<center><b>选修课课程</b></center>
<table width="100%">
<tr>
<jrun:param id="rs" type="QueryTable"/>
<jrun:foreach item="field" type="String" group="<%= rs.Names %>">
<td align="center"><b><%= field.toUpperCase() %></b></td>
</jrun:foreach>
<jrun:form method="post" name="form1">
<jrun:foreach group="page.rs">
<tr>
<jrun:foreach item="x" group="<%= rs.Values %>">
<td align="center"><%= x %></td>
</jrun:foreach>
</tr>
</jrun:foreach>
<td><b>我要选修一门:</b></td>
<td>
<jrun:input name="t1" value="课程号" onFocus="this.select()"
class="form-input"onMouseOver="this.focus()" size="10"/>
</td>
<td><b>学号</b></td>
<td>
<jrun:input name="t2" type="text" size="10" />
<input type="Submit" name="tj" value="提 交">
</td>
<td> </td>
</tr>
</table>
</jrun:form>
功能和基本原理
从此实例可以看到,在select_sub.jsp中包含了inc.jsp这个文件,通过<%@ taglib uri="Jruntags" prefix="jrun" %>来调用Jruntags,并类似创建对象一样定义了一个前缀jrun,实现了以“jrun”为前缀的各类标记。<jrun:if……>和<jrun:foreach……>是程序设计中if判断和for循环。<jrun:sql connection……>是建立数据库的连接,并同时进行select、insert、del等所有标准SQL的操作。这些操作都封装在Tag中的。由此可以看出,Jruntags的使用非常容易,代码简短。