精华内容
下载资源
问答
  • 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:45
    Servlet的执行流程 Tomcat结构 描述:用户发起一个请求后,由服务器接收处理,接收web。Xml文件的配置信息,如果找不到相应的资源,则会出现的404错误! 如果servlet中的class类写错了,则会出现500错误!Servlet...

    这里写图片描述
    Servlet的执行流程
    Tomcat结构
    描述:用户发起一个请求后,由服务器接收处理,接收web。Xml文件的配置信息,如果找不到相应的资源,则会出现的404错误!
    如果servlet中的class类写错了,则会出现500错误!

    Servlet的生命周期
    0.容器给我们创建对象,但是容器不知道我们构造方法,它不知道你传几个参数,不知道你传什么类型的参数。无参构造方法,就是实例化的过程。
    1.容器能不能去根据有参的构造方法去创建对象?
    从技术上讲可以,但是servlet并没有提供,我们必须准守。
    **

    展开全文
  • 一个请求的执行流程举例如下。 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

    结果:
    在这里插入图片描述

    展开全文
  • package tomcat.http; import lombok.Getter; import lombok.ToString; import java.io.IOException; import java.io.InputStream; /** * 通过输入流,对HTTP协议进行解析,拿到HTTP请求头的方法以及URL。 * *...
  • 接上文:实现tomcat对于静态资源的功能; 本文增加动态功能以及对比servletapi,项目目录大概就是这样html主要是静态的上篇文章说的 package cn.wcy.mytomcat2; import java.io.File; import java.io....
  • 关于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
  • tomcat 的启动流程很标准化,入口是 BootStrap,统一按照生命周期管理接口 Lifecycle 的定义进行启动。首先,调用 init()方法逐级初始化,接着调用 start()方法进行启动,同时, 每次调用伴随着生命周期状态变更事件...
  • 现在 Spring Boot 这么流行,为什么还要学习 Tomcat ? 确实 Spring Boot 内置 Tomcat 了,不再需要我们进行...请求访问 Tomcat 执行流程 请求流程源码剖析 当前内容版权归码字科技所有并授权显示,盗版必究。阅读原文
  • Bootstrap的main方法先new了一个自己的对象(Bootstrap),然后用该对象主要执行了四个方法: init(); setAwait(true); load(args); start(); init():初始化了ClassLoader(类加载器,没它的话后面就没法加载...
  • JSP执行流程分析 Tomcat内存调优策略 Tomcat下载与配置 要想进行项目的开发,核心在于web容器,也就是说必须要有web容器后才能进行项目的运行。所有的JSP的程序代码只需要放到web容器之中就可以自动执行了。 ...
  • Tomcat启动与执行流程

    2021-03-04 17:04:02
    Tomcat是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\...
  • 源码开头 //Filter中doFilter()方法参数的 FilterChain chain //创建过滤器链 ApplicationFilterChain ... //执行方法,和Filter放行代码一模一样 filterChain.doFilter(request.getRequest(),response.getResponse()
  • Tomcat 安全 配置安全 删除webapps目录下的所有文件,禁用tomcat管理界面; 注释或删除tomcat-users.xml文件内的所有用户权限; 更改关闭tomcat指令或禁用 tomcat的server.xml中定义了可以直接关闭 Tomcat 实例的...
  • 后来问了同事,说是可能是因为tomcat缓存的问题。管它呢,死马当活马医吧!  因为是在linux环境下操作的,所以使用linux命令简单明了快捷神速,大大提高了工作效率!  第一步:先停止tomcat服务器。  可...
  • MAC TomCat配置流程

    2017-12-12 15:06:06
    MAC TomCat配置流程拓展关于shellShell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过...
  • 上图是tomcat源码的一个执行流程,供大家参考,接下来还会分享更多的tomcat源码内容。 大小: 56.8 KB 查看图片附件
  • jsp项目部署到tomcat下的执行流程

    千次阅读 2015-07-06 19:22:26
    这篇博文将就一下几方面进行论述(如有误,请留言指出) ...1.jsp项目部署到Tomcat的过程 2.网页访问项目中jsp页面和servlet的过程  一、jsp项目部署到Tomcat     图一 (部署在Tomcat下的项目) 图二(项目
  • Tomcat如何创建Servlet? A.先到缓存中寻找有没有这个对象 如果没有: 1、通过反射去创建相应的对象(执行构造方法)  2、tomcat会把对象存放到缓存中 ...Servlet的执行流程 一:从浏览器地址(请求)开始分析 1.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 890
精华内容 356
关键字:

tomcat执行流程