JavaServlet及其特色java
Servlet是Java技术对CGI编程的回答。Servlet程序在服务器端运行,动态地生成Web页面。与传统的CGI和许多其余相似CGI的技术相比,Java Servlet具备更高的效率,更容易使用,功能更强大,具备更好的可移植性,更节省投资(更重要的是, Servlet程序员收入要比Perl程序员高:-):程序员
高效:web
在传统的CGI中,每一个请求都要启动一个新的进程,若是CGI程序自己的执行时间较短,启动进程所须要的开销极可能反而超过实际执行时间。而在Servlet中,每一个请求由一个轻量级的Java线程处理(而不是重量级的操做系统进程)。数据库
在传统CGI中,若是有N个并发的对同一CGI程序的请求,则该CGI程序的代码在内存中重复装载了N次;而对于Servlet,处理请求的是N个线程,只须要一份Servlet类代码。在性能优化方面,Servlet也比CGI有着更多的选择,好比缓冲之前的计算结果,保持数据库链接的活动,等等。编程
方便:性能优化
Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。服务器
功能强大:并发
在Servlet中,许多使用传统CGI程序很难完成的任务均可以轻松地完成。例如,Servlet可以直接和Web服务器交互,而普通的CGI程序不能。Servlet还可以在各个程序之间共享数据,使得数据库链接池之类的功能很容易实现。ide
可移植性好:工具
Servlet用Java编写,Servlet API具备完善的标准。所以,为I-Planet Enterprise Server写的Servlet无需任何实质上的改动便可移植到Apache、Microsoft IIS或者WebStar。几乎全部的主流服务器都直接或经过插件支持Servlet。
节省投资:
不只有许多廉价甚至免费的Web服务器可供我的或小规模网站使用,并且对于现有的服务器,若是它不支持Servlet的话,要加上这部分功能也每每是免费的(或只须要极少的投资)。
JSP及其特色
JavaServer Pages(JSP)是一种实现普通静态HTML和动态HTML混合编码的技术,有关JSP基础概念的说明请参见《JSP技术简介 》。
许多由CGI程序生成的页面大部分仍旧是静态HTML,动态内容只在页面中有限的几个部分出现。可是包括Servlet在内的大多数CGI技术及其变种,老是经过程序生成整个页面。JSP使得咱们能够分别建立这两个部分。例如,下面就是一个简单的JSP页面:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD><TITLE>欢迎访问Java中文网</TITLE></HEAD>
<BODY>
<H1>欢迎</H1>
<SMALL>欢迎,
<!-- 首次访问的用户名字为"New User" -->
<% out.println(Utils.getUserNameFromCookie(request)); %>
要设置账号信息,请点击
<A HREF=http://www.javaweb.cc/article/"Account-Settings.HTML">这里</A></SMALL>
<P>
页面的其他内容。.
</BODY></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和服务器端包含(Server-Side Include,SSI)相比
SSI是一种受到普遍支持的在静态HTML中引入外部代码的技术。JSP在这方面的支持更为完善,由于它能够用Servlet而不是独立的程序来生成动态内容。另外,SSI实际上只用于简单的包含,而不是面向那些可以处理表单数据、访问数据库的“真正的”程序。
JSP和JavaScript相比
JavaScript可以在客户端动态地生成HTML。虽然JavaScript颇有用,但它只能处理以客户端环境为基础的动态信息。除了Cookie以外,HTTP状态和表单提交数据对JavaScript来讲都是不可用的。另外,因为是在客户端运行,JavaScript不能访问服务器端资源,好比数据库、目录信息等等。