Servlet中的主要方法及其作用

HttpServlet类包含init()destroy()service()等方法。其中init()和destroy()方法是继承的。

1.init()方法:

        在servlet的生命周期中,仅执行一次init()方法。它是在服务器装入servlet的时候执行的。可以配置服务器,以在启动服务器或客户机首次访问servlet时装入servlet。无论有多少客户机访问servlet,都不会重复执行init()。

2.service()方法:

        service()方法是servlet的核心,每当一个客户请求一个HttpServlet对象,该对象的service()方法就要被调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。如果HTTP请求方法为GET,则缺省情况下就调用doGet()。所以不必覆盖service()方法,只需覆盖想用的的do方法即可。当post请求时,doPost方法被调用。与POST请求相关的参数作为一个单独的HTTP请求从浏览器发送到服务器。当需要修改服务器的数据时,应该使用doPost()方法。  当一个客户通过HTML表单发出一个HTTPGET请求或直接请求一个URL时,doGet()方法被调用。。与GET请求相关的参数添加到URL的后面,并与这个请求一起发送。当不会修改服务器端的数据时,应该使用doGet()方法。

3.destroy()方法:

        destroy()方法仅执行一次,即在服务器停止且卸装servlet时执行该方法。典型的将servlet作为服务器进程的一部分来关闭。缺省的destroy()方法通常是符合要求的,但是也可以覆盖他,典型的是管理服务器端资源。例如,如果servlet在运行时会累积统计数据,则可以编写一个destroy()方法,该方法用于在未装入servlet时将统计数字保存在文件中。另一个示例是关闭数据库连接。   当服务器卸装servlet时,将在所有service()方法调用完成后,或在指定的时间间隔过后调用destroy()方法。一个servlet在运行service()方法时可能产生其他的线程,因此请确认使用destroy()方法时,这些线程已终止或完成。

4.总结:

        在servlet默认情况下,无论是get请求还是post请求,都会经过service()方法来处理,然后转向doGet()或者doPost()方法.

从上面可以看出这里的service()是用来转向的,但是如果你在自己的servlet类中覆盖了service方法,那么这是service()就不是用来转向的了,而是用来处理业务的,此时不论你的客户端是用post请求还是get请求来请求这个servlet,都会执行service方法也只能执行service方法,不会去执行doPost()或doGet()方法.

所以,我们写servlet的时候,一般都是重写doGet或者doPost方法,不会管service方法.

 

你可能感兴趣的:(Servlet,java)