动态网页打造利器——JSP
编程爱好者
最近不少网页制作初学者问寇豆,“什么是动态网页?”其实,动态网页是一种根据浏览者输入的参数,由程序代码动态生成的网页。也就是说,动态网页不是预先就编写好的浏览时显示完全没有变化的HTML代码。
资深Java技术顾问Bill Grary:JSP也许不是目前最好的动态网页技术,但它绝对是一种不能缺少或替代的技术,至少对Java程序员是这样。希望编写动态网页的初学者都应该对它有一定的了解。
JSP简介
JSP(Java Server Pages)是目前流行的三大动态网页技术之一,它是由Java技术的领导者Sun Microsystems倡导并得到众多公司支持、基于Java架构的动态网页技术标准。与大家更为熟悉的ASP类似,JSP也是在HTML文件嵌入Java程序片段(Scriptlet)和JSP标记(tag)来构成专门的JSP网页。内置了JSP执行引擎的Web服务器在处理JSP网页请求时,首先执行其中的Java程序片段,然后再将执行结果以HTML格式发送至客户端,其工作机制也与ASP完全相同。
与ASP相比,JSP具有更高的执行性能,因为JSP网页在第一次访问时就被服务器编译成Servlet代码并驻留内存,当再有对该JSP网页的访问时,服务器将产生一个线程来响应,因此JSP服务端的响应速度比解释执行的ASP要快得多,而且JSP的Servlet代码也比ASP的源代码具有更好的安全性。JSP同Java语言一样,也是运行在Java虚拟机(JVM)上,所以JSP的代码不需要作任何修改,就可以在所有安装了JVM的操作系统中执行,这是仅能在Wind
ows下运行的ASP难以比拟的。在扩充系统功能方面,ASP和JSP分别使用了COM和JavaBean组件技术,然而COM的开发不仅烦琐,而且无法在ASP中完成。而JavaBean则与JSP完全融为一体,不需要借助其他工具即可进行JavaBean组件的开发,其方便和简捷是ASP无法匹敌的。
当J2EE越来越风靡之时,基于它的JSP动态网页技术也受到开发者前所未有的重视。尽管JSP尚不能撼动ASP的地位,但在重要网络系统开发中,它获得了越来越广泛的认可,甚至成为开发这类系统的首选技术。
如何学习
对初学者而言,学习JSP并不比ASP难多少,当然学之前须掌握必要的HTML知识。由于JSP以Java语言为基础,因此学习Java是学习JSP无法绕过的环节,这也是许多初学者对JSP感到畏难的地方。不过,尽管Java特别是J2EE已是一个庞大的体系,要成为合格的Java程序员比以往更加困难,但是多数时候JSP只用到Java的基础部分,掌握了Java的基础知识就足以应付绝大多数JSP的开发,而Java入门并不难,难的是那些在JSP中基本用不到高级技术。因此初学者完全不必有什么顾虑,毕竟JSP并非只为高级开发者而设计,它同样适合初学者。如果善学且乐于实践,初学者不出一周即能大体掌握JSP的设计方法,制作出简单的JSP应用程序。
JSP服务器的架设稍微复杂一些。首先要安装JDK和JRE,以构建Java运行环境。然后安装JSP服务器软件,如IBM WebSphe
re Server、WebLogic、Apache Tomcat、Java Web Server等,其中Tomcat以其占用资源少、配置简单、完全免费等特点在中小型系统使用较多。Tomcat既可作为单独的JSP服务器,也可作为IIS、Apache等Web服务器的外部插件。另外,要让JSP访问数据库,还得安装相应的JDBC驱动程序才行。
常用的网页设计工具Dreamweaver和Java开发软件Jbuilder都可以支持JSP的开发。不过,Dreamweaver的长项是HTML设计,对JSP代码的编写和调试支持很弱,而Jbuilder刚好相反,因此,在实际的JSP开发中常把两者结合起来使用。
JSP示例
这里给出JSP访问SQL Server 2000数据库的一个简单示例。同ASP一样,JSP最主要的应用就是对数据库进行操作,因此这个示例虽然简单却很有代表性。
在微软网站上下载SQL Server 2000的JDBC驱动程序并安装和配置好,然后在SQL Server 2000中建立SY2005数据库,并新建SY2005_TX表。接着在Dreamweaver中编辑JSP网页,如图1所示。

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>//加载Java类库
<html>
<body>
<table width="421" border="1" align="center">
<tr>
<td width="79" scope="col"><div align="center">编号</divgt;</td>
<td width="71" scope="col"><div align="center">姓名</divgt;</td>
<td width="249" scope="col"><div align="center">通讯地址</div></td>
</tr>
</table>
<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();//调用JDBC访问SQLServer 2000数据库
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=SY2005";
String user="sa";
String password="123";
Connection conn= DriverManager.getCo
nnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,Res
ultSet.CONCUR_UPDATABLE);
String sql="select * from SY2005_TX";
ResultSet rs=stmt.executeQuery(sql); //读取数据集
while(rs.next()) //用表格显示数据集全部记录
{
%>
<tr>
<td width="79" scope="col"gt;<div align="center"><%=rs.getObject(1)%></div></td>
<td width="71" scope="col"><div align="center"><%=rs.getObject(2)%></div></td>
<td width="249" scope="col"><div align="center"><%=rs.getObject(3)%gt;</div></td>
</tr>
<%
}
rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
将JSP网页存为sy.jsp,然后将它复制到Tomcat安装文件夹的Webapps\ROOT子文件夹中,最后在IE地址栏中输入http://localhost:8080,即可得到如图2所示的运行结果。

当第一次执行sy.jsp时,要等待较长时间才会出现结果,这是JSP引擎正对JSP文件中的代码进行编译所致。由于需要调用各种类库以及进行语法分析和检查,编译速度较慢,许多初学者据此认为JSP运行速度不如ASP,其实是个误会。当编译完成后,再访问sy.jsp,JSP将调用已编译好的class文件,运行速度就变得非常快了。
学习资源推荐
随着JSP日益受到网络开发者的青睐,JSP的学习资料也逐渐多起来,不管是入门的,还是讨论高级技术的,都很容易找到。这里向大家推荐两本书。
《JSP技术大全》,机械工业出版社,定价59元。该书详细介绍了JSP开发知识,运行环境的配置,servlet、JavaBean的编程技术以及与XML的协同等,并对JSP标签定制、数据库操作、测试和调试技术等高级主题进行了深入探讨。它以一个实例将介绍的所有知识点有机地串连起来,很方便初学者循序渐进地学习。因此,该书既是初学者的入门宝典,也可作JSP开发者常备案头的工具书。
《JSP高级开发和应用》,科学出版社,定价42元。这本书对JSP的讨论可谓面面俱到,对一些实用的高级技术的讨论十分深入。作为一本面向应用的工具书,它并不纠缠于JSP理论,而是给出了众多的解决方案,特别适合已掌握JSP基础知识欲进一步提高自己水平的开发者使用。
网上JSP的资源非常多,用Google搜索一下,能找到几十万个网页。下面遴选的几个JSP资源站点,值得大家去看看。
http://jakarta.apache.org,Tomcat的官方网站,上面既有Tomcat程序下载,也有许多Tomcat和JSP技术文档可供参考。
http://java.sun.com,Java的官方网站,上面有最新的Java开发资源。
http://www.zdnet.com.cn/developer/special/JSP/,JSP技术专区,上面有丰富的JSP开发信息。
http://www.cn-java.com,中国Java技术网,Java各方面的资源无所不包。
http://dev.yesky.com/web/ysdevwebjsp/,天极网的JSP编程栏目,技术文章很多且较有价值。
http://www.jspcn.net,JSP中文网,对JSP各方面的资料搜罗得比较齐全。