java web 9 Servlet的认知与使用

在介绍JSP中提到Servlet是JSP的基础,那么这一节我们就来看看什么是Servlet以及Servlet在java web开发中是如何配置的。


Servlet的特点

    与传统的CGI和许多其他类似的CGI技术相比,java servlet具有更高的效率,易使用,功能性强大,具有更好的可移植性,更节省投资。在未来的技术发展过程中,servlet有可能彻底取代CGI。

    在传统的CHI中,每一个请求都要启动一个新的进程,如果CGI程序本身的执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间。而在Servlet中,每一个请求由一个轻量级的Java线程处理。(而不是重量级的操作系统进程)

    在传统CGI中,如果有N个并发的对同一CGI程序的请求,则该CGI程序的代码在内存中重复撞在了N次;而对于Servlet,处理请求的是N个线程,只需要一份Servlet代码。在性能优化方面,Servlet也比CGI有着更多的选择

1)方便

2)功能强大

3)可移植性好

4)节省投资,有许多廉价甚至免费的Web服务器可供个人或小规模往网站使用。


Servlet的生命周期

    servlet生命周期分为三个阶段

1)Servlet初始化阶段

    在下列时刻Servlet容器装载Serv

(1)Servlet容器启动时自动装载某些servlet,实现它只需要在web.XML文件中<Servlet></Servlet>之间添加如下diamante

<loadon-startup></loadon-startup>

(2)在Servlet容器启动后, 客户首次向servlet发送请求

(3)Servlet类文件被更新后,重新装载Servelt

Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。在Servlet的整个生命周期内,init()方法只被调用一次


2)Servlet相应请求阶段

    对于用户到达Servlet的请求,Servlet容器会创建特定于这个请求ServletRequset对象和ServletResponse对象,然后调用Servlet的service方法。service方法从ServletRequset对象获得客户请求信息,处理该请求,并通过ServletResponse对象向客户返回相应信息。

    对于Tomcat来说,它会将传递过来的参数放在一个Hashtable中,该Hashtable的定义如下。

    private Hashtable<String String []>paramHashStringArray = new Hashtable<String String []>();

3)Servlet终止阶段

    当Web应用被终止,或Servlet容器终止运行,或Serv容器重新装载Servlet新实例时,Servlet容器会先调用Servlet的destroy()方法,在destory()方法中可以释放掉Servlet占用的资源。

    总的来说就是Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对象doXXX方法(doGet,doPost等),当服务器决定将实例销毁时调用destroy方法

    与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般都不会销毁,而CGI对每个请求都产生新的进程,服务完成后就会销毁,所以效率上低于Servlet。


猜你喜欢

转载自blog.csdn.net/qq_36344771/article/details/80793058
今日推荐