概述
Java Servlet及其特点
Servlet是Java技术对CGI编程的回答Servlet程序在服务器端运行动态地生成Web页面与传统的CGI和许多其他类似CGI的技术相比Java Servlet具有更高的效率更容易使用功能更强大具有更好的可移植性更节省投资(更重要的是 Servlet程序员收入要比Perl程序员高:)
◆ 高效
在传统的CGI中每个请求都要启动一个新的进程如果CGI程序本身的执行时间较短启动进程所需要的开销很可能反而超过实际执行时间而在Servlet中每个请求由一个轻量级的Java线程处理(而不是重量级的操作系统进程)
在传统CGI中如果有N个并发的对同一CGI程序的请求则该CGI程序的代码在内存中重复装载了N次而对于Servlet处理请求的是N个线程只需要一份Servlet类代码在性能优化方面Servlet也比CGI有着更多的选择比如缓沖以前的计算结果保持数据库连接的活动等等
◆ 方便
Servlet提供了大量的实用工具例程例如自动地解析和解码HTML表单数据读取和设置HTTP头处理Cookie跟蹤会话状态等
◆ 功能强大
在Servlet中许多使用传统CGI程序很难完成的任务都可以轻松地完成例如Servlet能够直接和Web服务器交互而普通的CGI程序不能Servlet还能够在各个程序之间共享数据使得数据库连接池之类的功能很容易实现
◆ 可移植性好
Servlet用Java编写Servlet API具有完善的标准因此为IPlanet Enterprise Server写的Servlet无需任何实质上的改动即可移植到ApacheMicrosoft IIS或者WebStar?负跛?有的主流服务器都直接或通过插件支持Servlet
◆ 节省投资
不仅有许多廉价甚至免费的Web服务器可供个人或小规模网站使用而且对于现有的服务器如果它不支持Servlet的话要加上这部分功能也往往是免费的(或只需要极少的投资)
JSP及其特点
JavaServer Pages(JSP)是一种实现普通静态HTML和动态HTML混合编码的技术有关JSP基础概念的说明请参见《JSP技术简介 》
许多由CGI程序生成的页面大部分仍旧是静态HTML动态内容只在页面中有限的几个部分出现但是包括Servlet在内的大多数CGI技术及其变种总是通过程序生成整个页面JSP使得我们可以分别创建这两个部分例如下面就是一个简单的JSP页面
<!DOCTYPE HTML PUBLIC //WC//DTD HTML Transitional//EN>
<HTML>
<HEAD><TITLE>欢迎访问网上商店</TITLE></HEAD>
<BODY>
<H>欢迎</H>
<SMALL>欢迎
<! 首次访问的用户名字为New User >
<% outprintln(UtilsgetUserNameFromCookie(request)); %>
要设置帐号信息请点击
<A HREF=AccountSettingshtml>这里</A></SMALL>
<P>
页面的其余内容
</BODY>&l t;/HTML>
下面是JSP和其他类似或相关技术的一个简单比较
◆ JSP和Active Server Pages(ASP)相比
Microsoft的ASP是一种和JSP类似的技术JSP和ASP相比具有两方面的优点首先动态部分用Java编写而不是VB Script或其他Microsoft语言不仅功能更强大而且更易于使用第二JSP应用可以移植到其他操作系统和非Microsoft的Web服务器上
◆ JSP和纯Servlet相比
JSP并没有增加任何本质上不能用Servlet实现的功能但是在JSP中编写静态HTML更加方便不必再用 println语句来输出每一行HTML代码更重要的是借助内容和外观的分离页面制作中不同性质的任务可以方便地分开比如由页面设计专家进行HTML设计同时留出供Servlet程序员插入动态内容的空间
◆ JSP和服务器端包含(ServerSide IncludeSSI)相比
SSI是一种受到广泛支持的在静态HTML中引入外部代码的技术JSP在这方面的支持更为完善因为它可以??Servlet而不是独立的程序来生成动态内容另外SSI实际上只用于简单的包含而不是面向那些能够处理表单数据访问数据库的真正的程序
◆ JSP和_JavaScript相比
_JavaScript能够在客户端动态地生成HTML虽然_JavaScript很有用但它只能处理以客户端环境为基础的动态信息除了Cookie之外HTTP状态和表单提交数据对_JavaScript来说都是不可用的另外由于是在客户端运行_JavaScript不能访问服务器端资源比如数据库目录信息等等