Java:阐述Servlet和CGI的区别?


本文摘自JavaGuide。

Servlet总结:

在Java Web程序中,Servlet主要负责接收用户请求 HttpServletRequest,在doGet(),doPost()中做相应的处理,并将回应HttpServletResponse反馈给用户。

Servlet 可以设置初始化参数,供Servlet内部使用。

一个Servlet类只会有一个实例,在它初始化时调用init()方法,销毁时调用destroy()方法。

Servlet需要在web.xml中配置(MyEclipse中创建Servlet会自动配置),一个Servlet可以设置多个URL访问。

Servlet不是线程安全,因此要谨慎使用类变量。

Servlet和CGI的区别?

CGI的不足之处:

1,需要为每个请求启动一个操作CGI程序的系统进程。如果请求频繁,这将会带来很大的开销。

2,需要为每个请求加载和运行一个CGI程序,这将带来很大的开销。

3,需要重复编写处理网络协议的代码以及编码,这些工作都是非常耗时的。

Servlet的优点:

1,只需要启动一个操作系统进程以及加载一个JVM,大大降低了系统的开销。

2,如果多个请求需要做同样处理的时候,这时候只需要加载一个类,这也大大降低了开销。

3,所有动态加载的类可以实现对网络协议以及请求解码的共享,大大降低了工作量。

4,Servlet能直接和Web服务器交互,而普通的CGI程序不能。Servlet还能在各个程序之间共享数据,使数据库连接池之类的功能很容易实现。

补充:Sun Microsystems公司在1996年发布Servlet技术就是为了和CGI进行竞争,Servlet是一个特殊的Java程序,一个基于Java的Web应用通常包含一个或多个Servlet类。

Servlet不能够自行创建并执行,它是在Servlet容器中运行的,容器将用户的请求传递给Servlet程序,并将Servlet的响应回传给用户。

通常一个Servlet会关联一个或多个JSP页面。

以前CGI经常因为性能开销上的问题被诟病,然而Fast CGI早就已经解决了CGI效率上的问题,所以面试的时候大可不必信口开河的诟病CGI,事实上有很多你熟悉的网站都使用了CGI技术。

相关阅读 >>

接口和抽象类的区别是什么?

Java.net.connectexception: connection timed out: connect

Java 中的 io 流

servlet 网页重定向

Java md5 加密方法

Java 动态代理详解

servlet 国际化

servlet 包

Java stream接口操作 count,anymatch,allmatch,nonematch

Java 面向对象编程三大特性: 封装 继承 多态

更多相关阅读请进入《Java》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...