Java_Tips_CGI&Servlet

 

1.1 为什么使用CGI?  

我没有把什么是CGI放在基础篇的第一段,是因为实在很难说明白到底什么是CGI。而

如果你先知道CGI有什么作用,将会很好的理解CGI是什么这个概念。 CGI可以为我们提供许多

HTML无法做到的功能。比如 a.一个记数器 b.顾客信息表格的提交以及统计 c.搜索程d.WEB数

据库 用Html是没有办法记住客户的任何信息的,就算用户愿意让你知道。用Html也是无法把信

息记录到某一个特定文件里的。要把客户段的信息记录在服务器的硬盘上,就要用到CGI。 这是

CGI最重要的作用,它补充了Html的不足。是的,仅仅是补充,不是替代。

1.2 CGI是什么?  

好了,现在我们来说到底什么是CGI。Common Gate Intergace听起来让人有些专业,

我们就管它叫CGI好了。在物理上,CGI是一段程序,它运行在Server上,提供同客户段 Html页

面的接口。这样说大概还不好理解。那么我们看一个实际例子: 现在的个人主页上大部分都有

一个留言本。留言本的工作是这样的:先由用户在客户段输入一些信息,如名字之类的东西。接

着用户按一下“留言”(到目前为止工作都在客户端),浏览器把这些信息传送到服务器的CGI

目录下特定的cgi程序中,于是cgi程序在服务器上按照预定的方法进行处理。在本例中就是把

用户提交的信息存入指定的文件中。然后cgi程序给客户端发送一个信息,表示请求的任务已经

结束。此时用户在浏览器里将看到“留言结束”的字样。整个过程结束。 

1.3 选择你熟悉的编程语言   

既然CGI是一种程序,自然需要用编程语言来写。你可以用任何一种你熟悉的高级语

言, C,C++,C shell和VB。值得特别指出的,有一种叫Perl的语言。其前身是属于Unix专用的

高 级语言,其具有强大的字符串处理能力而成为现在写CGI,特别是表单类程序的首选。最近

它已经有了Window95,和winnt版本。你可以在搜索程序里找到在那里下载它。 VB是Ms的杀手

锏,从目前的情况看,微软公司正试图使VB无所不能。自然也包括在Internet 请各位注意,

VB开发的程序只能在windows平台上被执行,所以它有一定局限。 C Shell,经典的语言。可惜

能做的事情不多,而且必须在Unix平台下。 C,C++,正真的无所不能。可是在写CGI的时候显得

非常难以掌握。特别是缺乏可以灵活使用的字符串处理函数。对程序员的要求也比较高,维护复

杂。 最后要提醒各位,因为CGI是Server和Clinet的接口,所以对于不同的Server,CGI程序的

移值是一个很复杂的问题。一般对于不同的Server,决没有两个可以互相通用的CGI。实际上 这

就是CGI程序最复杂的地方。

1.4 安全   

我想各位敏感的朋友又要问我关于安全性能的问题了。实际上CGI是比较安全的,至

少比 那些没有数字签名的ActiveX控件要安全的多。除非你有意在程序里加入了破坏Server的

命令, 否则一般不会有什么严重的后果。而个人网站不向大众开放CGI目录,则因为怕各位学习

不精,无端增加服务器的负担,所以一般不提供。

Servlet简介
  1.Servlet 是什么?
  Servlet是使用Java Servlet 应用程序设计接口(API)及相关类和方法的 Java 程序。除了 Java Servlet API,Servlet 还可以使用用以扩展和添加到 API 的 Java 类软件包。Servlet 在启用 Java 的 Web 服务器上或应用服务器上运行并扩展了该服务器的能力。Java servlet对于Web服务器就好象Java applet对于Web浏览器。Servlet装入Web服务器并在Web服务器内执行,而applet装入Web浏览器并在Web浏览器内执行。Java Servlet API 定义了一个servlet 和Java使能的服务器之间的一个标准接口,这使得Servlets具有跨服务器平台的特性。
  Servlet 通过创建一个框架来扩展服务器的能力,以提供在 Web 上进行请求和响应服务。当客户机发送请求至服务器时,服务器可以将请求信息发送给 Servlet,并让 Servlet 建立起服务器返回给客户机的响应。 当启动 Web 服务器或客户机第一次请求服务时,可以自动装入 Servlet。装入后, Servlet 继续运行直到其它客户机发出请求。Servlet 的功能涉及范围很广。例如,Servlet 可完成如下功能:
  (1) 创建并返回一个包含基于客户请求性质的动态内容的完整的 HTML页面。
  (2) 创建可嵌入到现有 HTML 页面中的一部分 HTML 页面(HTML 片段)。
  (3) 与其它服务器资源(包括数据库和基于 Java 的应用程序)进行通信。
  (4) 用多个客户机处理连接,接收多个客户机的输入,并将结果广播到多个客户机上。例如,Servlet 可以是多参与者的游戏服务器。
  (5) 当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至applet的新连接,并将该连
接保持在打开状态。当允许客户机和服务器简单、高效地执行会话的情况下,applet也可以启动客户浏览器和服务器之间的连接。可以通过定制协议或标准(如 IIOP)进行通信。
  (6) 对特殊的处理采用 MIME 类型过滤数据,例如图像转换和服务器端包括(SSI)。
  (7) 将定制的处理提供给所有服务器的标准例行程序。例如,Servlet 可以修改如何认证用户。
  2.Servlet 的生命周期
  Servlet 的生命周期始于将它装入 Web 服务器的内存时,并在终止或重新装入 Servlet 时结束。
  (1) 初始化
  在下列时刻装入 Servlet:
 如果已配置自动装入选项,则在启动服务器时自动装入
 在服务器启动后,客户机首次向 Servlet 发出请求时
 重新装入 Servlet 时装入 Servlet 后,服务器创建一个 Servlet 实例并且调用 Servlet 的 init() 方法。在初始化阶段,Servlet 初始化参数被传递给 Servlet 配置对象。
  (2) 请求处理
  对于到达服务器的客户机请求,服务器创建特定于请求的一个“请求”对象和一个“响应”对象。服务器调用 Servlet 的 service() 方法,该方法用于传递“请求”和“响应”对象。service() 方法从“请求”对象获得请求信息、处理该请求并用“响应”对象的方法以将响应传回客户机。service() 方法可以调用其它方法来处理请求,例如 doGet()、doPost() 或其它的方法。
  (3) 终止
  当服务器不再需要 Servlet, 或重新装入 Servlet 的新实例时,服务器会调用 Servlet 的 destroy() 方法。
  

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值