0
点赞
收藏
分享

微信扫一扫

Tomcat&Servlet 运行原理讲解

程序员漫画编程 2022-03-20 阅读 111

文章目录


在从前的时候,想要运行一个Java代码,就必须要实现main方法,这是程序的入口,通过初识 Servlet 就会发现没有实现 main 方法,程序就被成功调用,并且还能够在浏览器除看见想要看见的结果,这是为什么呢?

事实就是,main 方法在Tomcat 中,Servlet 程序是配合Tomcat上运行的,Tomcat 就有了main 方法,就会拖着 Servlet 运行起来。

在这里插入图片描述

Servlet 是上是Tomcat 提供的一组API,因此其代码的实现是基于 Tomcat 的。Tomcat 通过 HTTP协议来和浏览器进行交互,交互主要分成三个步骤:请求接收处理请求返回响应

一、客户端(浏览器)与服务器之间的交互

请求接收:

处理请求:

返回响应:

二、Tomcat启动过程

三、Tomcat处理请求过程

四、Servlet的service方法

伪代码:

class Servlet {
    public void service(HttpServletRequest req, HttpServletResponse resp) {
    	String method = req.getMethod();
        if (method.equals("GET")) {
          	doGet(req, resp);
        } else if (method.equals("POST")) {
          	doPost(req, resp);
        } else if (method.equals("PUT")) {
         	 doPut(req, resp);
        } else if (method.equals("DELETE")) {
          	doDelete(req, resp);
        }
       ......
     }
}

service 会根据请求的方法,调用对应的方法,当调用doXXX方法时,触发多态机制,执行到程序员自己写的代码。

程序员自己写的 Servlet 类继承自 HttpServlet 类,HttpServlet 类继承自 Servlet 类,因此程序员写的类是 Servlet 的子类。在前面有介绍到 Tomcat 在启动时会将需要被实例化的类都放在了Servlet数组中,因此实际上我们是通过父类的引用来获取到被实例化的类的,从而触发多态。

类似于

Servlet ins = new HelloServlet();//HelloServlet 类是程序员自己实现的类的类名
ins.doGet(req,resp);

完!

举报

相关推荐

0 条评论