其他分享
首页 > 其他分享> > servlet的生命周期

servlet的生命周期

作者:互联网

这里写目录标题

什么是servlet?

servlet是一种服务应用程序,作为来自web浏览器和其他http服务器上的数据库或者应用程序间的中间层
可以用来获取网页表单输入,呈现数据库或者其他源的记录

servlet的生命周期

一个servlet的生命周期由 实例化、初始化、提供服务、销毁、被回收这5个步骤组成

实例化

当用户输入一个网络地址,这个地址的servlet被调用的时候,这个servlet就会被实例化
例如下面的程序LoginServlet:

import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class LoginServlet extends HttpServlet {
     
    public LoginServlet(){
        System.out.println("LoginServlet 构造方法 被调用");
    }
 
    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
 
        //略
 
    }
 
}

同时,无论访问了多少次LoginServlet,LoginServlet的构造方法只会调用一次,所以servlet是单例的

初始化

LoginServlet继承了HttpServlet,同时也就继承了初始化方法init(ServletConfig)
init(ServletConfig)方法也是单例的

提供服务

然后就是执行service()方法,通过浏览器传递的信息判断使用doGet()还是doPost()方法

import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class LoginServlet extends HttpServlet {
 
    public LoginServlet() {
        System.out.println("LoginServlet 构造方法 被调用");
    }
 
    public void init(ServletConfig config) {
        System.out.println("init(ServletConfig)");
    }
 
    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
  
        String name = request.getParameter("name");
        String password = request.getParameter("password");
  
        String html = null;
  
        if ("admin".equals(name) && "123".equals(password))
            html = "<div style='color:green'>success</div>";
        else
            html = "<div style='color:red'>fail</div>";
  
        PrintWriter pw = response.getWriter();
        pw.println(html);
  
    }
 
}

销毁

然后进行销毁destory()
下列两种情况下,会调用destroy()

  1. 该Servlet所在的web应用重新启动
    在server.xml中配置该web应用的时候用到了
    <Context path="/" docBase="e:\\project\\j2ee\\web" debug="0" reloadable="false" />
    如果把 reloadable=“false” 改为reloadable=“true” 就表示有任何类发生的更新,web应用会自动重启
    当web应用自动重启的时候,destroy()方法就会被调用

  2. 当关闭tomcat的时候destroy()方法会被调用

被回收

标签:web,生命周期,http,import,servlet,javax,LoginServlet
来源: https://blog.csdn.net/lolhahahaha/article/details/118853257