zoukankan      html  css  js  c++  java
  • servlet的生命周期的理解

    1.在servlet为客户端提供服务过程当中,在服务器内部只有一个servlet对象.

    意思就是说多个浏览器端输入相同的网址,访问相同的servlet,tomcat只会new出一个servlet对象。

    2.使用线程池的方式给浏览器端回应,线程池访问的都是同一个servlet对象。

    3.tomcat让servlet存在到结束的全过程

    加载 ClassLoader(当把我们编译好的类放入web容器中)

    实例化 new (时间:第一次客户端请求)

    初始化 init(ServletConfig)(只调用一次,时间new之后)

    处理请求doget 或dopost(多线程方式处理)

    退出服务 destroy (时间:web应用程序退出,重新加载,类的定义重新加载)

    4.实例化时间代码验证(在构造方法加上输入字符)

    当我们只有在浏览器端输入网址访问时它才出现

    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServlet;import java.io.IOException;
    import java.io.*;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class httpservlet extends HttpServlet {
      public httpservlet(){
        System.out.println("new 一个对象");
      }
    
      protected void doPost(HttpServletRequest req, HttpServletResponse resp){
        
        try {doGet(req,resp);
             System.out.println("dopost");
        }catch(IOException e){}
      }
    
    
    
    
      protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException{
        
        System.out.println("doget");
        PrintWriter out =resp.getWriter();
        out.println("<html><head><head/><body><h1>hello<h1><body/><html/>");
        out.flush();
        out.close();
    }
      
    
    
    
    
    
    }

    5.new一个servlet对象的验证

    同样第二次输入上述链接,你会发现没有构造方法里面的字符了

    6.验证加载类的时机

    当你重新定义类,替换掉以前类时,你会在tomcat服务器端发现提示:加载一个类(我的没有提示)

    7.验证初始化的时机

    跟验证new一样,它是new后面的

    8.验证退出请求的时机

    当你重启web服务器,然后在浏览器端访问资源,会发现构造方法又重新执行了,说明上一个对象被destroy了。

    (重新将类放入tomcat中,然后tomcat服务器会提示重新加载,然后destroy你原来的servlet对象)

    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServlet;import java.io.IOException;
    import java.io.*;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class httpservlet extends HttpServlet {
      public httpservlet(){
        System.out.println("new 一个对象");
      }
    
      protected void doPost(HttpServletRequest req, HttpServletResponse resp){
        
        try {doGet(req,resp);
             System.out.println("dopost");
        }catch(IOException e){}
      }
    
    
    
    
      protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException{
        
        System.out.println("doget");
        PrintWriter out =resp.getWriter();
        out.println("<html><head><head/><body><h1>hello<h1><body/><html/>");
        out.flush();
        out.close();
     
    }
      public void destroy(){
        System.out.println("destroy");
    }
      
    
    
    
    
    
    }
  • 相关阅读:
    Windows Socket编程简介
    IIS7.0 Appcmd 命令详解
    VC显示网页验证码、模拟CSDN网页登录
    c++对象初始化中 ZeroMemory、memset、直接赋0的区别
    在MFC程序中显示 JPG/GIF图像
    开始学习WTL——(1)关于STL/ATL/WTL之间的区别
    可编辑子项的CListCtrl类
    VC添加自定义消息
    VC调用JavaScript函数--处理QQ网页登录密码加密(空间、农场、WEB QQ等)
    VC创建定时关闭的MessageBox
  • 原文地址:https://www.cnblogs.com/S-Mustard/p/7552719.html
Copyright © 2011-2022 走看看