本文摘自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中为什么不要在 foreach 循环里进行元素的 remove/add 操作
更多相关阅读请进入《Java》频道 >>
深入理解Java虚拟机 JVM高级特性与实践 周志明 第3版
这是一部从工作原理和工程实践两个维度深入剖析JVM的著作,是计算机领域公认的经典。