由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的使用非常容易,代碼簡短。