先来看一下CGI和Servlet的比较:
|
|
|
CGI采用多进程 |
每个进程独立占用资源 |
每产生一个进程都要向系统申请资源,启动速度比较慢,运行过程比较快 |
Servlet采用多线程 |
共享同一个进程资源 |
每产生一个线程的速度是很快的 |
并发量大时,多进程方式会占用大量系统资源,多线程方式也会出现抢占资源的现象,但多线程方式还是比较优的,另外,实例变量会产生共享冲突,所以尽量采用本地变量
Servlet的生命周期:
(1)Web客户请求Servlet服务,容器加载一个Java Servlet类
(2)创建一个或多个实例
(3)HttpServlet.init()进行初始化,传入一个ServletConfig对象
(4)容器把HttpServletRequest和HttpServletResponse对象传递给HttpServlet.service()方法,service()被多次调用,各运行在不同的线程