分享
 
 
 

开发高效率企业动态Web系统

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

由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-ODBCBridge进行数据库连接。其中,数据库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>&nbsp;&nbsp;&nbsp;

<jrun:input name="t2" type="text" size="10" />&nbsp;&nbsp;

<input type="Submit" name="tj" value="提 交">

</td>

<td>&nbsp;</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的使用非常容易,代码简短。

Tag Library的工作原理也很简单,离不开TLD和TEI这两种文件。TLD是使用标准的XML语法定义标记和标记属性的、扩展名为.tld的文件。TEI其实就是标准的Java文件,这个文件中声明了各种各样的方法,对相应的TLD文件中的标记进行处理。也就是说一个完整的基于Tag Library的JSP应用系统是由.jsp、.tld、.class(.java)这三个重要文件组成的。所以,JRun安装目录中的servers\lib\Jruntags.jar文件在本例中扮演着极其重要的角色,Jruntags.jar文件是包含了taglib.tld和相应的很多TEI(.class)文件的压缩包。

使用Jruntags的优势

ASP和JSP的一个相似点是它们都在HTML语言中嵌入了包含在<%%>中的解释性代码。从select_sub.jsp的代码中可以看到,应用Jruntags则做到尽可能避免<%%>的出现,几乎实现纯标记(Tag)的形式。这样做的好处在于更有利于网站开发的分工,提高开发效率,增强扩展性和可维护性。

网站开发小组一般由界面(美工)设计和动态程序设计两类人才组成。前者负责用HTML语言等增强网站的视觉美感,而后者专注于设计程序,与数据库等打交道,实现动态调用数据的功能。只有两者配合默契方能开发出功能既强大,界面又生动美观的动态网站。但在应用JSP开发中,往往会因为界面设计人员误删了“<%”或程序员弄乱了表格的嵌套等诸多错误而大大影响开发的效率。使用Tag Library,功能设计人员可以更专注于Tag的定义和开发,亦即功能的实现;而界面开发者也可以根据易于理解的Tag和HTML语言设计生动的页面。这样,两者既分工明确,又不相互干扰,既提高效率,又易于查错。

Jruntags具有上述的优势,同时根据广大用户的客观需要定义了最常用的Tag,如发送和接收邮件、发送和接收消息等,节省了功能设计人员的开发时间。笔者在开发的过程中还用到sendmail功能,可以将通知等信息及时发送到学生的信箱中。这种实现不需要冗长的代码。

结束语

XML正逐步推向更广泛的应用,它同JSP一样具有良好的跨平台性能。这样,基于XML和JSP的Tag Library也能在不同的平台上流畅地运行。Allaire公司还提供了Linux平台下的JRun引擎,笔者将Windows平台上开发的JSP程序移值到Linux上,在不需要修改任何代码的情况下,能流畅地运行。可以想象,凭着JSP和XML的强大功能,JSP+XML技术必将得到更广泛的应用。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有