浅谈Java Servlets与CGI程序

开发 后端
本文介绍Java Servlets与CGI程序,有了Java Servlets,它们的功能强大,可以快速替代你现有的CGI程序。

从网络的早期阶段开始,人们就希望他们的网络服务器不仅能够显示静态文档,通用网关接口(CGI) 扩展了服务器的能力,但其代价是增加了额外的处理进程。FastCGI则把外部CGI 处理进程同网络服务器更紧密地集成在一起,另外,对于专有的,诸如NSAPI 和ISAPI 这样的服务器API,它们直接把外部进程以服务器插件的形式集成到服务器中。现在有了Java Servlets,它们的功能强大,可以快速替代你现有的CGI程序。

什么是Servlets?

就象applet扩充了网络浏览器的能力一样,Servlets这个Java部件,扩充了网络服务器的能力。对于任何种类的服务器端的处理,Servlets可以作为server-side includes使用或者作为CGI程序(在JavaSoft的Java Web server中可以作为插件)执行。 Servlets可以移植,不象CGI和专有的API模块,你可以利用Java的“编写一次,到处运行”的机制,在你的企业中配置网络应用程序。Servlets的运行也很稳固,在 Servlet 中你创建了一个数据库连接,下一次你访问Servlet时连接仍然存在,这同CGI程序不一样。Servlets也具有扩展性,所以你可以使用面向对象的程序设计方法,来减少开发时间。Servlets可以运行在任何支持Servlet 的网络服务器上。目前,Servlet SDK除了支持JavaSoft的Java Web server,还支持Netscape, Apache 和IIS,以及大量第三方的网络服务器。

运行你的Servlet

一旦编写好Servlet,并且编译成功之后,你可以把它放到网络服务器中Servlet别名目录中。就同服务器中的cgi-bin别名目录的作用一样,任何放在Servlet 目录中的文件,一旦被作为url的一部分被请求时,将被作为Servlets执行。例如,BasicCGIServlet可以通过如下的url调用: http://mycompany.com/Servlet/BasicCGIServlet。你既可以直接调用该url (并且传送给Servlet一个请求关键字/值对的串),也可以通过HTML表单中的一个动作来调用。要了解更多的支持Servlet的网络服务器的信息,请参阅JSDK中的有关文档信息。

进一步的用法

GenericServlet和 HttpServlet提供了一个构建Servlets的固定的基类。通过重载service()方法,你可以在它们的基础上进行构建。例如,你可以加入对响应缓存的支持(请参见HttpServlet 中的getLastModified()),也可以加入对HTTP 1.1方法的支持,等等。你甚至可以构建一个扩展的模板引擎。(有谁真的喜欢在他们的程序中内置HTML代码呢?)

另外一个用法是对JSDK进行扩展,使之除了支持标准的application/x-www-form-urlencoded mime 类型之外,还支持其他类型的表单编码。例如,你可以加入对multipart/form-data mime类型的支持,用于处理通过HTTP上载文件。接口方法getParameterNames(), getParameterValues()等等,都是在sun.Servlet包中实现的,所以你需要配置JSDK ,以便加入这些支持。还有一种变通的方法,你可以自己实现有关方法,但那样做,就需要复制代码或者改变JSDK的语义。上面的这些方法都是可行的,但是没有哪一种是***无缺的。

结论

现在你应该会自己创建Java Servlets了,它们可以用来代替传统的Perl和C/C++ CGI程序。 Java的面向对象的特性和“编写一次,到处运行”的机制使得Java Servlets的编写很简单。Servlet的稳固性,可以解决有关状态管理问题,而这些都是只用一次的CGI程序解决实际问题时通常会遇到的难题。Servlets可以利用Java语言的所有功能,包括JDBC和RMI。由于大多数网络服务器都加入了对Servlet的支持,Java将迅速成为开发企业级应用程序的一种可选语言。

【编辑推荐】

  1. Servlet容器的会话跟踪
  2. 详解Servlet实例
  3. 浅谈Servlet读取请求头
  4. 调用Http Servlet Request的方法
  5. 浅析Servlet基本结构
责任编辑:佚名 来源: 中国IT实验室
相关推荐

2012-07-01 03:34:44

VisualAgeServlets

2009-07-03 11:50:26

Java ServleJSP

2009-07-09 16:02:42

Servlets引擎

2009-07-03 12:48:24

Java Servle

2009-07-14 11:08:42

WebRendererSwing应用程序

2009-07-09 16:24:31

Servlets和JS

2009-07-01 17:44:46

Servlet和JSP

2009-07-10 13:09:53

.Net与Java S

2009-07-08 09:32:25

Java设计模式

2011-07-22 13:41:57

java

2009-07-09 16:16:06

Servlets和JSJRun安装

2009-06-30 13:38:37

SERVLET和JSP

2010-02-26 09:55:59

Fedora apac

2009-06-22 14:03:00

java教材程序设计

2010-02-26 09:03:10

mod_python模

2009-06-17 15:25:59

Java学习

2009-07-20 09:53:43

Java混合编程

2012-04-10 11:07:41

Java

2011-08-31 13:27:52

AndroidPhoneGap

2020-03-23 09:17:32

内存操作系统Windows
点赞
收藏

51CTO技术栈公众号