Servlet 是什么不多说,直接本主题。
Servlet的生命周期:从Servlet被创建到Servlet被销毁的过程
一次创建,到处服务
一个Servlet只会有一个对象,服务所有的请求,每个请求来,就开启一个线程进行处理
- 1.实例化(使用构造方法创建对象)
- 2.初始化 执行init方法(整个生命周期中只执行一次)
- 3.服务 执行service方法
- 4.销毁 执行destroy方法
实例化和执行init方法,什么时候执行呢?是在Tomcat装载Servlet的时候才执行的,先实例化,再初始化
你想想,他就是一个类,他不实例化,怎么干事情?吹牛吗?所以,最先实例化。
那么Tomcat又什么时候装载Servlet呢?怎么装载呢?不知道,不知道就对了。
Tomcat装载Servlet有三种情况:
1、在你的web.xml配置文件中(你项目的哈,不是tomcat人家的,不关人家的事),web.xml文件中的之间添加如下代码
<loadon-startup>1</loadon-startup>
数字越小,优先级越高,加了这个配置,你的那个servlet在项目一启动的时候就会去执行实例化和初始化方法。
2、第一次客户端来访问的时候。
3、Servlet类文件被更新后,重新装载Servlet。
现在进入主题
Servlet 创建有三种方式。
一、实现 Servlet 接口
因为是实现 Servlet 接口,所以我们需要实现接口里的方法。
Servlet 的执行过程,也就是 Servlet 的生命周期。
public class ServletDemo1 implements Servlet {
//1、这个就是实例化,一般我们不写,为啥,空的构造方法自然可以不写咯0.0
//public ServletDemo1(){}
//2、生命周期方法:当Servlet第一次被创建对象时执行该方法,该方法在整个生命周期中只执行一次
public void init(ServletConfig arg0) throws ServletException {
System.out.println("=======init=========");
}
//生命周期方法:对客户端响应的方法,该方法会被执行多次,每次请求该servlet都会执行该方法
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
System.out.println("hehe");
}
//生命周期方法:当Servlet被销毁时执行该方法
public void destroy() {
System.out.println("******destroy**********");
}
//当停止tomcat时也就销毁的servlet。
public ServletConfig getServletConfig() {
return null;
}
public String getServletInfo() {
return null;
}
}
二、继承 GenericServlet 类
它实现了 Servlet 接口除了 service 的方法,不过这种方法我们极少用。
public class ServletDemo2 extends GenericServlet {
@Override
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
System.out.println("heihei");
}
}
三、继承 HttpServlet 方法
public class ServletDemo3 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("haha");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("ee");
doGet(req,resp);
}
}
这种方法,也是我们经常用的方法。
这里只简单讲 Servlet 的三种创建方式,关于更详细的应用以及剖析以后再说。