广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java的Tomcat和Servlet的运行原理详解
  • 942
分享到

Java的Tomcat和Servlet的运行原理详解

2024-04-02 19:04:59 942人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录一、客户端(浏览器)与服务器之间的交互二、Tomcat启动过程三、Tomcat处理请求过程四、Servlet的service方法总结在从前的时候,想要运行一个Java代码,就必须

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

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

在这里插入图片描述

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

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

请求接收:

1.当用户在浏览器端输入一个网址后,浏览器就会构造一个HTTP请求

2.该HTTP请求就会通过种种手段转换成光电信号被传输到服务器端(具体的转换涉及通信知识)

3.服务器主机接收到这些光电信号后对其进行解析,还原成原本的HTTP请求,并交给Tomcat 进行处理

4.Tomcat 对HTTP请求进行解析,把请求交给 Servlet的代码进行处理

处理请求:

1.Tomcat 会通过 Content Path和Servlet Path来确定到某WEBapp的某类,在根据请求的方法(doXXX方法)来确定调用该类的具体方法,代码中的httpservletRequest对象就包含着HTTP请求的详细内容,根据代码进行结果的计算

返回响应:

1.Servlet 根据代码计算生成响应对象(HttpServletResponse)

2.Tomcat 在把该响应对象构造成HTTP响应,通过光电信号的方式传输到浏览器主机

3.浏览器主机在对光电信号进行解析还原成原本的HTTP响应,交给浏览器进行处理

4.浏览器解析该HTTP响应,将数据显示在界面上

二、Tomcat启动过程

1.首先,我们实现的 Servlet 代码,只是单纯的创建了Servlet类而已,想要让这些类真正的被使用,需要Tomcat进行实例化,Tomcat就会根据@WebServlet注解来获取到需要被实例化的类,通过反射的方式创建实例,并集中放在一数组中。

2.Tomcat持有了Servlet实例后,需要调用 Servlet 中的init()方法进行初始化操作(只会进行一次初始化操作)

3.然后进行绑定端口号,创建线程池,来并发的处理请求

4.在服务器运行结束前,就会调用 Servlet对象中的destroy()方法,进行资源回收操作

三、Tomcat处理请求过程

1.Tomcat 接收到请求之后,就会按照 HTTP协议的格式将其构造成 HttpServletRequest对象

2.Tomcat 根据 URL 来判断该请求书否为一静态资源(比如图片、html文件之类的),如果是,就直接返回该静态资源,如果是动态资源就执行接下来的Servlet 部分

3.根据 Content Path 和 Servlet Path来找到请求的Servlet对象,并调用Servlet中的service方法判断请求类型,调用到程序员自己写的doXXX方法

四、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);

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!  

--结束END--

本文标题: Java的Tomcat和Servlet的运行原理详解

本文链接: https://www.lsjlt.com/news/143301.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java的Tomcat和Servlet的运行原理详解
    目录一、客户端(浏览器)与服务器之间的交互二、Tomcat启动过程三、Tomcat处理请求过程四、Servlet的service方法总结在从前的时候,想要运行一个Java代码,就必须...
    99+
    2022-11-13
  • Servlet的运行原理是什么
    这篇文章主要介绍“Servlet的运行原理是什么”,在日常操作中,相信很多人在Servlet的运行原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Servlet的运行原理是什么”的疑惑有所帮助!接下来...
    99+
    2023-06-16
  • Java线程运行的原理详解
    目录栈与栈帧线程的上下文切换总结栈与栈帧 JVM中由堆、栈、方法区所组成,其中栈内存就是分配给线程使用的,每个线程启动后,虚拟机都会为其分配一块栈内存。 每个栈由多个栈帧组成,对应着...
    99+
    2022-11-13
  • Servlet的定义及运行原理是什么
    今天小编给大家分享一下Servlet的定义及运行原理是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.什么是servl...
    99+
    2023-07-05
  • 详解Gochannel管道的运行原理
    目录前言功能channel结构运行原理源码分析总结前言 Go推荐通过通信来共享内存,而channel就实现了这一理念。那channel是怎么运行的呢? 功能 举个例子看下channe...
    99+
    2023-05-19
    Go channel管道运行原理 Go channel运行原理 Go channel管道 Go channel
  • 浅谈一下Servlet的定义以及运行原理
    目录1.什么是servlet1.1 扩展web服务器端功能1.2 servlet组件2.如何写一个servlet?3.servlet是如何运行的?4.常见问题4.1 状态码4.2 4...
    99+
    2023-03-24
    Servlet定义 Servlet原理
  • java中 Filter的运行原理
    今天就跟大家聊聊有关java中 Filter的运行原理,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可重复...
    99+
    2023-06-14
  • java的Builder原理和实现详解
    首先给一个简单的Builder设计模式的例子: 主实现类代码如下: public class CompanyClient { public String company...
    99+
    2022-11-12
  • PHP核心的运行机制与实现原理详解
    PHP是一种流行的开源服务器端脚本语言,大量被用于Web开发。它能够处理动态数据以及控制HTML的输出,但是,如何实现这一切?那么,本文将会介绍PHP的核心运行机制和实现原理,并利用具体的代码示例,进一步说明其运行过程。PHP源码解读PHP...
    99+
    2023-11-08
    实现原理 运行机制 PHP核心
  • Java中ThreadLocal的用法和原理详解
    目录用法实现原理内存泄漏用法 隔离各个线程间的数据避免线程内每个方法都进行传参,线程内的所有方法都可以直接获取到ThreadLocal中管理的对象。 package com.exam...
    99+
    2023-05-15
    Java ThreadLocal用法 Java ThreadLocal原理 Java ThreadLocal
  • 详解PHP的执行原理和流程
    目录简介PHP启动第一步PHP启动第二步PHP关闭第一步PHP关闭第二步PHP底层工作原理①Zend引擎②Extensions③Sapi④上层应用构架思想Apache和php的关系A...
    99+
    2022-11-12
  • 带你了解JavaScript的运行原理
    目录浏览器内核JavaScript 引擎V8 引擎了解JavaScript 是如何运行的,以及的它的运行机制,首先,我们要了解浏览器的内核: 浏览器内核 了解过的都知道:不同的浏览器...
    99+
    2022-11-12
  • Hibernate在Java中的运行原理是什么
    这篇文章将为大家详细讲解有关Hibernate在Java中的运行原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。什么是Hibernate?      H...
    99+
    2023-05-31
    hibernate java ava
  • 运行Java的Class文件方法详解
    运行Java的Class文件方法详解 在Java编程中,我们通常会将源代码编译成可执行的字节码文件,也就是Class文件。然后,我们需要运行这些Class文件,以便执行Java程序。本文将详细介绍几种...
    99+
    2023-10-20
    java python 开发语言 Java
  • java Spring的启动原理详解
    目录引入Spring启动过程总结:总结引入 为什么突然说一下Spring启动原理呢,因为之前面试的时候,回答的那可谓是坑坑洼洼,前前后后,补补贴贴。。。 总而言之就是不行,再次看一下...
    99+
    2022-11-13
  • 详解Java Synchronized的实现原理
    目录SynchronizedSynchronized的使用方式Synchronized的底层实现1.Java对象头2.Monitor3.线程状态流转在Monitor上体现Synchr...
    99+
    2022-11-13
  • 详解Java中跳跃表的原理和实现
    目录一、跳跃表的引入二、算法分析1.时间复杂度2.空间复杂度三、跳跃表介绍四、跳跃表的实现1.数据结构定义2.查找3.插入4.删除五、实战1.代码2.测试结果一、跳跃表的引入 对有序...
    99+
    2022-12-27
    Java实现跳跃表 Java跳跃表原理 Java跳跃表
  • 详解Java线程池和Executor原理的分析
    详解Java线程池和Executor原理的分析线程池作用与基本知识在开始之前,我们先来讨论下“线程池”这个概念。“线程池”,顾名思义就是一个线程缓存。它是一个或者多个线程的集合,用户可以把需要执行的任务简单地扔给线程池,而不用过多的纠结与执...
    99+
    2023-05-31
    java 线程池 executor
  • java嵌套循环的运行原理是什么
    Java中的嵌套循环是通过嵌套多个循环语句来实现的。嵌套循环的运行原理是外部循环执行一次,内部循环会完整地执行完一遍,然后外部循环再...
    99+
    2023-09-13
    java
  • java虚拟主机运行的原理是什么
    Java虚拟主机(JVM)是一个虚拟的计算机,它运行在真实计算机上。JVM可以执行Java字节码文件,将其转换为可执行代码并在操作系...
    99+
    2023-06-12
    java虚拟主机 虚拟主机
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作