Servlet技术及其与CGI的比较

Java Servlet技术详解与现代Web开发 本文详细介绍了Java Servlet技术,阐述了其在Web开发中的作用、结构、生命周期以及与CGI脚本的比较。文章从Web服务器的基础知识开始,逐步深入到Servlet API的实现和优势,强调了Servlet在动态内容生成中的重要性,并探讨了Servlet的运行环境、生命周期方法和性能优化。此外,文章还讨论了在实际开发中如何使用Servlet,并对未来的Web技术发展进行了展望。... 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> WebSphere Application Server作为e-Business应用的核心,提供了基于Java Servlet技术的引擎,它把基本的HTTP Server扩充成为基于Java的应用服务器,提供了比CGI技术更优的性能。本文旨在对Java Servlet技术作一般性的介绍,并与传统的CGI技术进行比较。   Servlet是用Java编写的Server端程序,它与协议和平台无关。Servlet运行于Java-enabled Web Server中。Java Servlet可以动态地扩展Server的能力,并采用请求-响应模式提供Web服务。   最早支持Servlet技术的是JavaSoft的Java Web Server。此后,一些其它的基于Java的Web Server开始支持标准的Servlet API。Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:   ·客户端发送请求至服务器端;   ·服务器将请求信息发送至Servlet;   ·Servlet生成响应内容并将其传给Server。响应内容动态生成,通常取决于客户端的请求;   ·服务器将响应返回给客户端。   Servlet看起来像是通常的Java程序。Servlet导入特定的属于Java Servlet API的包。因为是对象字节码,可动态地从网络加载,可以说Servlet对Server就如同Applet对Client一样,但是,由于Servlet运行于Server中,它们并不需要一个图形用户界面。从这个角度讲,Servlet也被称为Faceless Object。   Servlet的优势   Java Servlet提供了许多优势:   ·Servlet可以和其他资源(文件、数据库、Applet、Java应用程序等)交互,以生成返回给客户端的响应内容。如果需要,还可以保存请求-响应过程中的信息。   ·采用Servlet,服务器可以完全授权对本地资源的访问(如数据库),并且Servlet自身将会控制外部用户的访问数量及访问性质。   ·Servlet可以是其它服务的客户端程序,例如,它们可以用于分布式的应用系统中。   ·可以从本地硬盘,或者通过网络从远端硬盘激活Servlet。   ·Servlet可被链接(chain)。一个Servlet可以调用另一个或一系列Servlet,即成为它的客户端。   ·采用Servlet Tag技术,可以在HTML页面中动态调用Servlet。   ·Servlet API与协议无关。它并不对传递它的协议有任何假设。   ·像所有的Java程序一样,Servlet拥有面向对象Java语言的所有优势。   Servlet与CGI-BIN   概括来讲,Servlet可以完成和CGI相同的功能。   CGI应用开发比较困难,因为它要求程序员有处理参数传递的知识,这不是一种通用的技能。CGI不可移植,为某一特定平台编写的CGI应用只能运行于这一环境中。每一个CGI应用存在于一个由客户端请求激活的进程中,并且在请求被服务后被卸载。这种模式将引起很高的内存、CPU开销,而且在同一进程中不能服务多个客户。   Servlet提供了Java应用程序的所有优势——可移植、稳健、易开发。使用Servlet Tag技术,Servlet能够生成嵌于静态HTML页面中的动态内容。   Servlet对CGI的最主要优势在于一个Servlet被客户端发送的第一个请求激活,然后它将继续运行于后台,等待以后的请求。每个请求将生成一个新的线程,而不是一个完整的进程。多个客户能够在同一个进程中同时得到服务。一般来说,Servlet进程只是在Web Server卸载时被卸载。(见图1)   图1 Servlet运行模式   图2 Servlet生命周期   Servlet生命周期   Servlet的生命周期(见图2)可以被归纳为以下几点:   ·装载Servlet。这项操作一般是动态执行的。然而,Server通常会提供一个管理的选项,用于在Server启动时强制装载和初始化特定的Servlet(1);   ·Server创建一个Servlet的实例(2);   ·Server调用Servlet的init()方法(3);   ·一个客户端的请求到达Server(1);   ·Server创建一个请求对象(4);   ·Server创建一个响应对象(5);   ·Server激活Servlet的service()方法(6),传递请求(7)和响应(8)对象作为参数;   ·service()方法获得关于请求对象的信息,处理请求,访问其他资源(9),获得需要的信息(10);   ·service()方法使用响应对象的方法,将响应传回Server(11)、(12),最终到达客户端(13)。service()方法可能激活其它方法以处理请求,如doGet()或doPost()或程序员自己开发的新的方法;   ·对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service()方法,将这两个对象作为参数传递给它。如此重复以上的循环,但无需再次调用init()方法。一般Servlet只初始化一次;   ·当Server不再需要Servlet时(一般当Server关闭时),Server调用Servlet的Destroy()方法。   Servlet与CGI程序的比较   CGI(Common Gateway Interface)程序,主要用Perl、Shell Script或C编写,能够向客户端提供动态内容,即每次客户端浏览器访问某一页面时,可以看到不同的内容。这里对完成相同功能的CGI程序和Java Servlet程序作一比较,以便更清楚地看到Servlet的简单特性。   这里CGI和Servlet程序的功能均为获得客户端在浏览器表单中输入的参数(Firstname,Lastname),并将返回给客户端。相应的CGI程序和Servlet程序分别如下:   ·CGI程序(Perl):   $query—string=$ENV{?QUERY—STRING?};   $query—string=As/%([dA-Fa-f][dA-Fa-f])/pack(″C″,hex()$1))/eg;$query—string=As/+//g;   @pairs=split(/&/,$query—string);   foreach $pair(@pairs) {    ($key,$value)=split(/=/,$pair);    $form—data{$key}=$value;   }   $firstname=$form—data{″firstname″};   $lastname=$form—data{″lastname″};   print ″Hello,$firstname $lastname. Thank you for your visit! ″;   ·Servlet程序:   public void service(HttpServletRequest request,HttpServletResponse response)   throws ServletExeption,IOExeption   {    ServletOutputStreamout=response.getOutputStream();    response.setContentType(″text/html″);    String firstname=request.getParameter(″firstname″);    String lastname=request.getParameter(″lastname″);    out.println(″Hello,″+firstname+″ ″+lastname+″.″);    out.println(″Thank you for your visit!″);    out.lose()   }   可以很明显地看到Java Servlet源代码比相应的CGI Perl Script简单许多。这里需要导入三个package:javax.servlet、javax.servlet.http和java.io。定义Servlet的类扩展了HttpServlet class,而不是GenericServlet class,因为此Servlet需要与HTML form进行交互。   在CGI程序中有很大一部分用于处理对参数的提取和解码过程,而在Servlet程序中,解码传递的参数部分并不需要额外编写。从HttpServlet class继承来的基本函数可以自动完成解码的过程。因此,程序员可以在Servlet service()方法中直接获取由客户端创建和编码的Key-value对。解码后的Key-value对可以直接从HttpServlet class的service()方法的第一个参数中获得。这将极大地减少程序员的劳动量和重复的代码劳动,并降低编码难度。   综上所述,Servlet在性能、编写难度、可移植性等方面比CGI有明显优势。在WebSphere Application Server中提供了功能强大的Servlet API,它们比JSDK拥有更多的功能和更优的性能,为Servlet的编程提供了很好的支持。随着WAS的日益推广和Java技术的普及,可以预见,Servlet技术将取代CGI,成为对Web Server功能扩充的标准技术。
【100%通过率】华为od统一考试B卷【查找接口成功率最优时间段】Python 实现 服务之间交换的接口成功率作为服务调用关键质量特性,某个时间段内的接口失败率使用一个数组表示,数组中每个元素都是单位时间内失败率数值,数组中的数值为0~100的整数, 给定一个数值(minAverageLost)表示某个时间段内平均失败率容忍值,即平均失败率小于等于minAverageLost,找出数组中最长时间段,如果未找到则直接返回NULL。 阅读详情

相关推荐

国内外主流嵌入式GUI汇总

随着MCU资源增多,处理能力也强了,同时市场需求也增多了GUI功能也越来越丰富了,很多的嵌入式图形库都可以做出绚丽的界面。

m0_69914734的博客 3292

JavaWeb中 Servlet和CGI的区别是什么?

**Servlet**:是Java编写的,运行在服务器端的小程序,它是一个Java类,实现了Servlet接口。综上所述,Servlet作为一种现代的Web开发技术,相较于CGI,提供了更高的性能、更好的可移植性、更丰富的API支持以及更先进的编程模型,因此在当今的Web开发实践中,Servlet已经成为了主流的选择。- **CGI**:CGI脚本的生命周期通常由操作系统的进程管理机制控制,每个请求结束后,CGI脚本的进程就会被销毁,这导致了每次请求都需要重新加载和执行CGI脚本,增加了开销。

Dyan_csdn的博客 910

PHP项目实战:易宝支付SDK对接全流程(含回调处理与常见问题排查)

本文详细介绍了PHP项目中易宝支付SDK的对接全流程,包括环境准备、SDK配置、支付请求构建与发起、回调处理实战以及常见问题排查。特别针对回调处理环节的常见问题提供了解决方案,帮助开发者快速完成支付对接并优化性能。

weixin_29007809的博客 388

JAVASE第六式

JAVASE06

weixin_45631716的博客 312

电机FOC控制实战:STM32 CubeMX配置六路互补PWM与死区优化

本文详细介绍了如何使用STM32 CubeMX配置六路互补PWM与死区优化,实现电机FOC控制。通过实战经验分享,包括时钟配置、定时器设置、死区时间计算及优化技巧,帮助开发者避免常见问题,提升电机控制性能。特别适用于STM32G4系列的无刷电机驱动应用。

weixin_29193259的博客 403

A Side Scan Sonar Image Denoising Algorithm Based on Compound of Fuzzy Weighted Average and Kalman F

Abstract 水下侧扫声纳图像的噪声来源:高斯噪声、脉冲、斑点噪声。 传统方法只能移除部分噪声,并且去噪后容易造成细节模糊。 本文在考虑到噪声的随机性以后,提出一种融合了模糊加权平均和卡尔曼滤波的去噪方法。 在最大化保留图像细节的基础上,同时去除高斯噪声和脉冲噪声 一.Introduction 由于海底环境和声波自身干涉的影响,声纳图像生成的图像难免会有噪点。声纳采集的图像通常会有高斯噪声、脉...

qq_44516871的博客 929

Java - 阐述Servlet和CGI的区别?

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service()方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet。 ...

了解➔熟悉➔掌握➔精通 3万+

第一讲:halcon模板匹配捆绑测量矩形检测芯片针脚

使用halcon模板匹配捆绑测量矩形,检测位置发生变换的芯片针脚缺陷。

uiopmn1的博客 2995

java cgi_CGI与Servlet的区别和联系

1. 定义:CGI(Common Gateway Interface 公共网关接口)是HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。2. 功能:绝大多数的CGI程序被用来解释处理杰自表单的输入信息,并在服 务器产生相应的处理,或将相应的信息反馈给浏览器。CGI程序使 网页具有交互功能。3. 运行环境:CGI程序在UNIX操作系统上CERN或NCSA格式的...

weixin_32657693的博客 468

KEPServerEX 6 之 lot Gateway MQTT Clinet 配置使用方式

IoT Gateway即Internet of Things Gateway物联网网关。 ---------------------------------------------------------------------------------- 方式:使用kepw的IOTGateway插件选择MQTTClient 解决:可以实现 KEPW 的Tag值 发送到 MQTT 服务器上 ----------------------------------------...

-雲飛兄-博客 6942

有限元分析-静力学分析-与分析解对比-——以阶梯轴的静力分析为例——静态结构分析

150mm,a=300mm{a=300mm}a=300mm,b=200mm{b=200mm}b=200mm,L=1000mm{L=1000mm}L=1000mm,F=300kN{F=300kN}F=300kN,材料为45,弹性模量E=2.1e11Pa{E=2.1e11Pa}E=2.1e11Pa,泊松比v=0.28{v=0.28}v=0.28,屈服应力δs=355MPa{δ_s=355MPa}δ。使用line body生成的模型,可以选择自动划分网格的,WB会将以梁单元将其划分完成,例如图2所示。

qq_15963745的博客 67

JAVA基础:Servlet技术及其与CGI的比较

  WebSphere Application Server作为e-Business应用的核心,提供了基于Java Servlet技术的引擎,它把基本的HTTP Server扩充成为基于Java的应用服务器,提供了比CGI技术更优的性能。本文旨在对Java Servlet技术作一般性的介绍,并与传统的CGI技术进行比较。  Servlet是用Java编写的Server端程序,它与协议和平台无关

elimago的专栏 888

自然语言处理:长文本场景下的关键词抽取实践

自然语言处理:长文本场景下的关键词抽取实践

丨汀、的博客 2077

servlet和cgi区别

Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等。Servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet。创建线程比创建进程的开销要小,所以,与CGI相比,Servlet在交互过程中有更短的响应时间,响应效率更高。

zz_ll9023的博客 861

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

CGI和Servlet的区别

CGI:Common GatewayInterface,通用网关接口。 CGI处理步骤 首先,客户端(即Web浏览器)根据某资源的URL向Web服务器提出请求;Web服务器的守护进程(HTTPDaemon)将此请求的参数通过标准输入和环境变量传递给指定的CGI程序,并启动此应用程序进行处理,如要存取数据库服务器上数据库的数据,则向数据库服务器发出处理请求,数据库服务器将执行结果返回给CGI程序

ITSTAR 1159

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

CGI与Servlet的区别和联系

1. 定义: CGI(Common Gateway Interface 公共网关接口)是HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。 2. 功能: 绝大多数的CGI程序被用来解释处理杰自表单的输入信息,并在服 务器产生相应的处理,或将相应的信息反馈给浏览器。CGI程序使 网页具有交互功能。 3. 运行环境: CGI程序在UNIX操...

weixin_30466421的博客 72

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

java servlet 特点_Java Servlet及其特点

Servlet是Java技术对CGI编程的回答。Servlet程序在服务器端运行,动态地生成Web页面。与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资(更重要的是, Servlet程序员收入要比Perl程序员高:-):高效在传统的CGI中,每个请求都要启动一个新的进程,如果CGI程序本身的执行时间较短,启...

weixin_29708043的博客 441

java servlet的主要特点是_JavaServlet及其特点是什么? 爱问知识人

1 概述 1。1 Java Servlet及其特点Servlet 是Java技术对CGI编程的回答。Servlet程序在服务器端运行,动态地生成Web页面。与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资(更重要的是, Servlet程序员收入要比Perl程序员高:-): 高效在传统的CGI中,每个请求都要...

weixin_31703753的博客 464

jsp java applet_Java Servlet与Applet、CGI、JSP的比较

Java Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的Web页面。Java Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。Java Servlet与Applet 的比较:相似之处:◆它们不是独立的应用程...

weixin_29322049的博客 297

Servlet常见面试问答

以下是有关 Servlet 的常见问题解答。我已经提供了每个问题的简要回答,这将有助于您在技术面试回合中被选中。 Q 1. 什么是servlet? Servlet 是一种服务器端编程语言,用于生成动态网页。它生成网页作为从客户端(浏览器)收到的请求的响应。 Q 2. 静态网页 vs 动态网页? 对所有用户都相同的网页是静态网页,根据用户的请求动态生成的网页(每个用户根据请求可能不同)被称为动态网页。Servlet 主要用于动态网页。 Q 3. servlet 的生命周期? 以下是servlet生...

m0_48717384的博客 414

Servlet入门教程(一) Servlet和JSP概述

<br />  1.1 Java Servlet及其特点 <br />   Servlet是Java技术对CGI编程的回答。Servlet程序在服务器端运行,动态地生成Web页面。与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资(更重要的是, Servlet程序员收入要比Perl程序员高:-): <br />    高效<br />     在传统的CGI中,每个请求都要启动一个新的进程,如果CGI程序本身的执行时间

金龙的专栏 458

一、Servlet和JSP概述

1.1 Java Servlet及其特点    Servlet是Java技术对CGI编程的回答。Servlet程序在服务器端运行,动态地生成Web页面。与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资(更重要的是, Servlet程序员收入要比Perl程序员高:-):     高效

courage89的专栏 385

servlet

servlet Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。 狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet...

weixin_30415801的博客 443

JAVA学习篇--Servlet详解

Servlet由来        做过BS项目的人都知道,浏览器能够根据HTML静态标记语言来显示各式各样的网页。但是如果我们需要在网页上完成一些业务逻辑:比如登陆验证。或者说网页显示的内容在服务器的数据库中。如果是这样,除了负责显示的HTML标记之外,必须还要有完成这些业务功能的代码存在。这种网页我们就叫做动态网页。      对于静态网页而言,服务器上存在的是一个个纯HTML

GarfieldEr007的专栏 1145
上一篇: 对一个简单的 JDBC 包装器的扩展及应用
下一篇: Servlet---WAP编程初级教程
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值