JavaWeb_servlet
Servlet 生命周期
● javax.servlet.Servlet 接口中,有三个方法说明了 Servlet 的生命周期:
- void init(ServletConfig):创建后马上调用 init() 完成初始化;
- void service(ServletRequest,ServletResponse):每次处理请求时调用 service() 方法;
- void destroy():当 Tomcat 要销毁 Servlet 实例时,先调用 destroy() 方法。
● 示例(细节操作参见上一篇)(本节示例只是在上一节的基础上更换了 demo1 源码)
- 编码(完整源码见文末)
- 结果
● 说明
- Servlet 对象的实例默认情况下是在浏览器第一次调用 servlet 时候被创建的(可以修改其创建时机后续讲解)现在你应该已经清楚了,Servlet 的实例不由我们创建,Servlet 的方法不由我们来调用,这一切都是由 Tomcat 来完成!!!这就是说由 Tomcat 来管理 Servlet,而我们只需要去编写 Servlet 实现类,并将其部署到 web.xml 文件中去!
- 再次提醒,只有这三个方法是生命周期中的方法。也就是说,生命周期方法会被 Tomcat 在不同的时间点来调用!而其它方法就不会被调用了!!!如果你在自己写的 Servlet 中添加了其他方法,那么 Tomcat 也是不会去调用它们的!但你可以让生命周期方法去调用你自己写的方法就OK了!
以上操作源码(web.xml同上一篇):
package com.wyx.servlet;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
*
* @author renliang servlet的生命周期 ServletDemo2对象实例并不是由我们手动的创建,而是web容器给给我们创建(面试常问)
*
* void init(ServletConfig config) :默认情况当servlet被第一次访问的时候init会被调用,
* 说明servlet的实例默认情况下是第一次被访问的时候创建的(可以改的),
* 第二次往后都不会再被调用,servlet的实例是单例的 void
*
* service(ServletRequest req, ServletResponse res) :每次请求来的时候都会被调用 void
* destroy() :当ServletDemo2销毁时被调用
*
*/
public class demo1 implements Servlet
{
public void destroy()
{
System.out.println("destroy 被调用...");
}
public ServletConfig getServletConfig()
{
return null;
}
public String getServletInfo()
{
return null;
}
public void init(ServletConfig arg0) throws ServletException
{
System.out.println("init方法被调用...");
}
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException
{
System.out.println("service方法被调用...");
response.getOutputStream().write("<font color='red'>service 方法被调用...</font>".getBytes());
}
}
如有错误,欢迎指正!