-
Tomcat 执行流程
2020-05-30 19:59:40之前也没有研究过tomcat,只知道是服务器,能处理数据。以下为tomcat的体系结构 tomcat架构图 一般在web里,tomcat扮演两个角色。 web容器:web容器所能做的就是接受用户对静态资源的请求并进行恢复。比如...之前也没有研究过tomcat,只知道是服务器,能处理数据。以下为tomcat的体系结构
其中Container-容器组件
用于封装和管理 Servlet ,以及具体处理Request请,在Connector内部包含了4个子容器:
Engine,实现类为 org.apache.catalina.core.StandardEngine
Host,实现类为 org.apache.catalina.core.StandardHost
Context,实现类为 org.apache.catalina.core.StandardContext
Wrapper,实现类为 org.apache.catalina.core.StandardWrapper这四个字容器实际上是自上向下的包含关系
Engine:最顶层容器组件,其下可以包含多个 Host。
Host:一个 Host 代表一个虚拟主机,其下可以包含多个 Context。
Context:一个 Context 代表一个 Web 应用,其下可以包含多个 Wrapper。
Wrapper:一个 Wrapper 代表一个 Servlet。Tomcat 的web目录,对应关系实际是这样的:Webapps 对应的就是 Host 组件,example 对应的就是 Context 组件,Wrapper 就是容器内的 Servlet了。
tomcat架构图
一般在web里,tomcat扮演两个角色。
web容器:web容器所能做的就是接受用户对静态资源的请求并进行恢复。比如apache,但是apache也能处理php 和perl这样的动态资源的原因是因为apache的配置文件里可以做配置。类似于通过加载插件的方式提供对perl和php等动态资源请求的能力。tomcat在web容器的基础上增加了对动态资源处理的能里,也就是所谓的servlet容器,就需要我们配置在web.xml文件里。
tomcat在启动时会去读取web.xml文件。但是tomcat对servlet的加载是属于懒加载,也就是说启动时并没有将web.xml中所有的servet都加载到内存中,而是当前请求用到那个servlet才会去加载哪一个。
servlet容器:servlet是单例模式 整个生命周期中 同一个servlet对象只存在一个。其实servlet虽然是老技术 但是后面很多的新产品本质上都是在其基础上再开发和封装的。我们一开始学习web的时候,就是要自己手动编写servlet。
大致思路如下:
只要客户端一访问服务器,就开始创建servlet对象,通过调用init()方法对其初始化,只创建一次,以后客户端访问就直接从内存里拿这个servlet对象,在这个期间会执行service(httpservletrequest req ,httpservletresponse res)方法,然后就可以doget和dopost传参了。最后服务器通过 res这个对象向客户端回送数据(一般先得到OutputStream os=res.getOutputStream()对象,在os.write(...)写数据,回送给客户端)。关于servlet对象的销毁,会执行一个destroy()方法,一般是在关闭web应用或关闭服务器的时候会调用这个destroy()方法。
有关filter
可以复用的代码,拦截HTTP请求、响应、处理、转换,一般用于XSS拦截器、SQL拦截器
javax.Servlet.Filter中实现init(),doFilter(),destroy()
Tomcat Server处理一个http请求的过程
假设来自客户的请求为:
http://localhost:8080/test/index.jsp
1.用户在浏览器中输入网址localhost:8080/test/index.jsp,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得;
2.Connector把该请求交给它所在的Service的Engine(Container)来处理,并等待Engine的回应;
3.Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host;
4.Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为“ ”的Context去处理);
5.path=“/test”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL Pattern为*.jsp的Servlet,对应于JspServlet类;
6.构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost(),执行业务逻辑、数据存储等;
7.Context把执行完之后的HttpServletResponse对象返回给Host;
8.Host把HttpServletResponse对象返回给Engine;
9.Engine把HttpServletResponse对象返回Connector;
10.Connector把HttpServletResponse对象返回给客户Browser。
流程图如下所示:
参考链接:Tomcat原理以及处理http请求过程
-
Tomcat执行流程
2018-10-17 20:57:07装载所有已经部署到tomcat下的项目中的web.xml //1.监听端口 ServerSocket ss = new ServerSocket(8887); //2.接收连接 Socket s = ss.accept(); //3.接收到连接,拿到一个Socket //4.通过...//0.装载所有已经部署到tomcat下的项目中的web.xml
//1.监听端口
ServerSocket ss = new ServerSocket(8887);
//2.接收连接
Socket s = ss.accept();
//3.接收到连接,拿到一个Socket
//4.通过socket拿到输入输出流
//5.通过输入流,拿到请求内容,如下
GET /www/abcd HTTP/1.1
Accept: ...
Accept-Language: zh-cn,en-us;q=0.5
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: localhost:8888
Connection: Keep-Alive
//6.拿出请求中的url部份:/www/abcd
//7.通过url,在web.xml中找到对应的Servlet类:
com.lovo.MyServlet
//8.通过反射创建Servlet对象
Servlet servlet = (Servlet)Class.forName("com.lovo.MyServlet").newInstance();
//9.调用servlet.service(),这样,servlet就被调用了。 -
Tomcat执行流程!
2017-11-23 21:40:45Servlet的执行流程 Tomcat结构 描述:用户发起一个请求后,由服务器接收处理,接收web。Xml文件的配置信息,如果找不到相应的资源,则会出现的404错误! 如果servlet中的class类写错了,则会出现500错误!Servlet...
Servlet的执行流程
Tomcat结构
描述:用户发起一个请求后,由服务器接收处理,接收web。Xml文件的配置信息,如果找不到相应的资源,则会出现的404错误!
如果servlet中的class类写错了,则会出现500错误!Servlet的生命周期
0.容器给我们创建对象,但是容器不知道我们构造方法,它不知道你传几个参数,不知道你传什么类型的参数。无参构造方法,就是实例化的过程。
1.容器能不能去根据有参的构造方法去创建对象?
从技术上讲可以,但是servlet并没有提供,我们必须准守。
** -
tomcat执行流程总结+实践
2021-01-10 08:57:09一个请求的执行流程举例如下。 url:http://localhost:8888/test/index.jsp,get请求。 浏览器发送http协议格式的请求数据包。数据包经过网络到达指定ip服务器。 tomcat的Connector监听8888端口,将数据包发送给...tomcat是一个用java编写的服务器程序。一个请求的执行流程举例如下。
url:http://localhost:8888/test/index.jsp,get请求。
浏览器发送http协议格式的请求数据包。数据包经过网络到达指定ip服务器。
tomcat的Connector监听8888端口,将数据包发送给Engine.
Engine找到名称是localhost的Host,把数据包发送给它,找不到就发送给defaultHost。
Host找到path是test的Context,翻docBase目录,找到jspservlet.java
Host创建HttpServletRequest对象,HttpServletResponsed对象,调用doGet方法
servlet doGet执行完毕后,HttpServletResponse对象返回到Host,逆回去,最后给Connector,它将数据转为字符串封装成响应数据包。实践:
需求:在浏览器地址栏输入http://www.itbz.com:8888/itbz/face.jpg可访问到C;/Users/Pctrues的face.jpg
操作:
在server.xml中的中追加如下代码
然后打开Windoes的这个配置文件编辑,将127.0.0.1与www.itbz.com绑定
shuru :
打开tomcat
浏览器输入上面的url结果:
-
手写迷你版Tomcat,了解Tomcat执行流程
2020-04-26 23:18:19package tomcat.http; import lombok.Getter; import lombok.ToString; import java.io.IOException; import java.io.InputStream; /** * 通过输入流,对HTTP协议进行解析,拿到HTTP请求头的方法以及URL。 * *... -
原生jdk实现tomcat功能+对比servletapi和tomcat执行流程分析 --动态版
2020-03-11 16:36:21接上文:实现tomcat对于静态资源的功能; 本文增加动态功能以及对比servletapi,项目目录大概就是这样html主要是静态的上篇文章说的 package cn.wcy.mytomcat2; import java.io.File; import java.io.... -
干货!从Tomcat执行流程了解jsp是如何被解析的,错误提示是哪里生成的。
2018-05-07 22:53:00关于Tomcat组成 先上张图: Tomcat组成: 1. Server:代表整个 servlet 容器,如Tomcat,JBoss之类的。 2. Service:它由一个或者多个Connector组成,以及一个Engine,负责处理所有Connector所获得的客户... -
Tomcat服务器执行流程
2019-04-17 21:52:59来自 https://www.cnblogs.com/xdp-gacl/p/3744053.html -
bat tomcat程序在后台执行_tomcat启动流程
2020-12-30 15:20:48tomcat 的启动流程很标准化,入口是 BootStrap,统一按照生命周期管理接口 Lifecycle 的定义进行启动。首先,调用 init()方法逐级初始化,接着调用 start()方法进行启动,同时, 每次调用伴随着生命周期状态变更事件... -
揭秘 !Tomcat 启动流程和请求处理流程源码剖析
2020-07-06 08:41:56现在 Spring Boot 这么流行,为什么还要学习 Tomcat ? 确实 Spring Boot 内置 Tomcat 了,不再需要我们进行...请求访问 Tomcat 执行流程 请求流程源码剖析 当前内容版权归码字科技所有并授权显示,盗版必究。阅读原文 -
Tomcat笔记:Tomcat的执行流程解析
2018-08-21 21:08:00Bootstrap的main方法先new了一个自己的对象(Bootstrap),然后用该对象主要执行了四个方法: init(); setAwait(true); load(args); start(); init():初始化了ClassLoader(类加载器,没它的话后面就没法加载... -
Tomcat配置 JSP执行流程分析 Tomcat内存调优策略
2020-06-08 14:08:07JSP执行流程分析 Tomcat内存调优策略 Tomcat下载与配置 要想进行项目的开发,核心在于web容器,也就是说必须要有web容器后才能进行项目的运行。所有的JSP的程序代码只需要放到web容器之中就可以自动执行了。 ... -
Tomcat启动与执行流程
2021-03-04 17:04:02Tomcat是servlet的运行环境,所以Tomcat是servlet容器。 那么Tomcat是怎样启动的呢?说到这里需要先介绍一下Servlet容器和Web容器的区别。Sevrlet容器是用来管理servlet的生命周期,而web容器,即web服务器是用来... -
Tomcat --执行流程
2016-09-23 13:31:00#3.tomcat server处理一个http请求流程 假设客户端的请求为: http://localhost:8080/testSQL/index.jsp 1.请求被发到localhost的8080端口,被tomcat监听器获取 connectionTimeout="20000" redirectPort=... -
tomcat 启动流程
2019-04-10 13:17:44上一篇文章分析了通过startup.bat启动Tomcat相当于执行如下代码,即运行Bootstrap start start "Tomcat" "C:\Program Files\Java\jdk1.7.0_51\bin\java" -Djava.util.logging.config.file="D:\Program Files\... -
tomcat filter执行流程【不长,简单易懂】
2021-04-05 23:04:20源码开头 //Filter中doFilter()方法参数的 FilterChain chain //创建过滤器链 ApplicationFilterChain ... //执行方法,和Filter放行代码一模一样 filterChain.doFilter(request.getRequest(),response.getResponse() -
Tomcat核心组件及源码执行流程
2020-02-19 04:55:25Tomcat 安全 配置安全 删除webapps目录下的所有文件,禁用tomcat管理界面; 注释或删除tomcat-users.xml文件内的所有用户权限; 更改关闭tomcat指令或禁用 tomcat的server.xml中定义了可以直接关闭 Tomcat 实例的... -
tomcat的执行流程和各个文件夹的作用
2012-04-08 22:03:46后来问了同事,说是可能是因为tomcat缓存的问题。管它呢,死马当活马医吧! 因为是在linux环境下操作的,所以使用linux命令简单明了快捷神速,大大提高了工作效率! 第一步:先停止tomcat服务器。 可... -
MAC TomCat配置流程
2017-12-12 15:06:06MAC TomCat配置流程拓展关于shellShell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过... -
tomcat源码流程分析(一)
2016-07-06 15:13:45上图是tomcat源码的一个执行流程,供大家参考,接下来还会分享更多的tomcat源码内容。 大小: 56.8 KB 查看图片附件 -
jsp项目部署到tomcat下的执行流程
2015-07-06 19:22:26这篇博文将就一下几方面进行论述(如有误,请留言指出) ...1.jsp项目部署到Tomcat的过程 2.网页访问项目中jsp页面和servlet的过程 一、jsp项目部署到Tomcat 图一 (部署在Tomcat下的项目) 图二(项目 -
Tomcat如何创建Servlet? Servlet的执行流程
2017-06-23 11:03:08Tomcat如何创建Servlet? A.先到缓存中寻找有没有这个对象 如果没有: 1、通过反射去创建相应的对象(执行构造方法) 2、tomcat会把对象存放到缓存中 ...Servlet的执行流程 一:从浏览器地址(请求)开始分析 1.