• Servlet生命周期


    一. 什么是Servlet?

    在一个Web项目中,处理请求和发送响应是由Servlet程序来完成的。它由服务器调用,运行在服务器上,是可以生成动态页面的Web组件。

    一个项目(会被打包成*.war文件)的运行必须要使用支持Servlet API的Web容器(服务器):Tomcat是一个Servlet容器,它负责处理客户端的请求,把请求传送给Servlet,并将Servlet的响应内容传送给用户。
    在这里插入图片描述

    二. Servlet的运行周期
    客户端通过注解中的URL路径发起请求,其本质就是在调用Servlet实例并且执行它的service()方法。Servlet实例的创建和使用的过程,就是Servlet的生命周期

    Servlet的生命周期被分为四个部分:

    1. 实例化
      Servlet容器可以自动创建实例,根据Servlet请求的URL路径,调用无参构造方法来创建一个Servlet实例。

    2. 初始化
      通过重写HttpServlet父类的init()方法来进行 Servlet实例的初始化。

    3. 服务
      通过实例调用父类的service()方法来提供服务:service()方法会根据请求方式的不同,调用不同的请求方法。
      ①. 如果子类没有重写父类的请求方法(doGet()方法或doPost()方法),就默认调用父类自己的请求方法,响应一个405状态码。
      ②. 如果子类重写了请求方法,则调用子类重写的doGet() 或 doPost()来发送请求或产生应答。

    4. 销毁
      容器关闭( 停止服务器,或者重新部署Web应用)重新时销毁Servlet对象,调用destory()方法

    【实现代码】

    // 生命周期
    // 早期的Servlet需要在web.xml中配置映射路径,但最新Servlet版本只需要通过注解就可以完成映射。
    @WebServlet("/home.do")
    public class HomeServlet extends HttpServlet{
    	// 1.实例化
    	// 无参构造方法
    	public HomeServlet() {
    		System.out.println("1.HomeServlet实例化");
    	}
    	
    	// 2.初始化
    	// 重写HttpServlet父类的init()方法
    	@Override
    	public void init() throws ServletException {
    		System.out.println("2.HomeServlet实例初始化");
    	}
    	
    	
    	// 3.  服务
        // 请求方式的不同,需要调用不同的请求方法
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		 System.out.println("3.HomeServlet被Get请求到!" + this.hashCode());
    		 System.out.println("请求方式:" + req.getMethod());
    		// System.out.println(req.getRemoteHost());
    		 
    	}
    //	@Override
    //	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //		System.out.println("HomeServlet被Post被请求到了!");
    //	}
    	
    	// 4. 销毁
    	@Override
    	public void destroy() {
    		System.out.println("4.HomeServlet实例被销毁");
    	}
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    【运行结果】
    在这里插入图片描述

    【当我停止服务器时】

    在这里插入图片描述

  • 相关阅读:
    Cython加密python代码防止反编译
    算法练习3——删除有序数组中的重复项
    智能座舱的「交互设计」大战
    Linux服务器部署SpringBoot项目教程
    第2.2章 StarRocks表设计——排序键和数据模型
    网站攻击技术,一篇打包带走!
    (十一)数据结构-线索二叉树
    【debug】figure.show()不出图/一闪而过
    FastDFS小文件存储原理
    广义线性模型(GLM)及其应用
  • 原文地址:https://blog.csdn.net/weixin_45939128/article/details/126451075