美文网首页
Servlet生命周期

Servlet生命周期

作者: KaveeDJ | 来源:发表于2019-04-08 16:08 被阅读0次

    一个Servlet的生命周期由实例化,初始化,提供服务,销毁,被回收几个步骤组成。

    实例化

    • 当用户通过浏览器输入一个路径,这个路径对应的servlet被调用的时候,该Servlet就会被实例化


      image.png
    • 无论访问了多少次LoginServlet,构造方法只会执行一次,所以Servlet是单例的

    初始化

    • LoginServlet继承了HttpServlet,同时也继承了init(ServletConfig)方法
    • init初始化也只会执行一次
    • 代码如下
    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 构造方法 被调用");
        }
        
        @Override
        public void init(ServletConfig config) throws ServletException {
            System.out.println("init(ServletConfig)");
        }
        
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            
            String name = req.getParameter("name");
            String password = req.getParameter("password");
            
            String html = null;
            
            if ("admin".equals(name) && "123".equals(password)) {
                html = "<div style='color:green'>登录成功</div>";
            } else {
                html = "<div style='color:red'>登录失败</div>";
            }
            
            resp.setContentType("text/html; charset=UTF-8");
            resp.getWriter().println(html);
        }
    }
    
    
    • 效果如下


      image.png

    提供服务

    • 执行service方法,然后决定doGet,还是doPost
    • 处理具体的业务

    销毁

    • web应用重启的时候回调用destroy
    • 关闭tomcat的时候,destroy会被调用

    被回收

    • 当该Servlet被销毁后,就满足垃圾回收的条件了
    • 当下一次垃圾回收GC来临的时候,就有可能被回收

    相关文章

      网友评论

          本文标题:Servlet生命周期

          本文链接:https://www.haomeiwen.com/subject/jgfpiqtx.html