`
chinese.darren
  • 浏览: 100483 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Tomcat处理请求的详细流程

阅读更多
tomcat处理一个请求的详细流程:

protocolHandler负责生成endpoint和Http11ConnectionHandler
endpoint的acceptor线程负责处理连接请求,收到连接请求后交给worker线程处理,work线程调用Http11ConnectionHandler,Http11ConnectionHandler维护一个Http11Processor池,
在构造Http11Processor时将生成org.apache.coyote.Request和org.apache.coyote.Response对象。
Http11Processor使用InternalInputBuffer类来解析http协议,并将解析后的数据(请求头,分割行等)封装到org.apache.coyote.Request和org.apache.coyote.Response对象中,
之后将此两对象传给CoyoteAdapter.service(request, response)在该方法内部实现了org.apache.coyote.Request-->org.apache.catalina.connector.Request;
org.apache.coyote.Response-->org.apache.catalina.connector.Response的转换,接下来请求进入pipeline,pipeline中value的执行(调用value的invoke方法)顺序如下:
StandardEngineValve-->StandardHostValve-->StandardContextValve-->StandardWrapperValve-->ApplicationFilterChain.doFilter-->Servlet(HttpServlet).service
(由StandardWrapper创建的单实例——多线程共用),invoke方法的参数即为org.apache.catalina.connector.Request/Response。
如果是jsp则继续-->JspServletWrapper.service-->Compiler(如果没有被编译的话)-->装载具体编译后的servlet class file-->交给具体servlet的service方法-->通过out.write写入
html页面,事实上这个out是response.getWriter,所以也就将结果写入了response。

新建session:
Manager manager = context.getManager();
Session session = manager.createSession(null);
如何从服务器上下文查询数据:
Context context = server.getGlobalNamingContext();
UserDatabase database = (UserDatabase) context.lookup("UserDatabase");
分享到:
评论

相关推荐

    tomcat处理一个http请求的详细过程

    tomcat中server配置文件的结构,以及处理一个http请求的全过程

    Tomcat请求处理UML序列图

    6. **StandardPipeline**:管道组件,负责处理请求的流程控制,通常由多个阀(Valve)组成。 7. **StandardValve**:阀组件,是StandardPipeline中的具体处理单元,负责执行特定的任务,如安全验证、日志记录等。 8....

    S19-再看tomcat架构与请求处理流程1

    `Host` 是虚拟主机的概念,可以托管多个 Web 应用,而 `Valve` 是一系列处理请求和响应的过滤器,可以实现日志记录、安全性检查等功能。 总的来说,Tomcat 的架构和请求处理流程涉及到了网络通信、HTTP 解析、生命...

    TOMCAT原理详解及请求过程

    7. `Servlet`处理请求并返回响应。 8. 响应通过相同的层次结构回传,最终由`Connector`将其转换成HTTP响应发送给客户端。 通过以上分析可以看出,TOMCAT不仅提供了一种灵活的架构设计,还具备了强大的扩展性和...

    how tomcat work 中文版

    Coyote是Tomcat处理HTTP请求和响应的组件。它监听特定端口(默认8080),接收来自客户端的HTTP请求,解析请求头和请求体,然后交给Catalina处理。处理完成后,Coyote将响应结果打包成HTTP响应,并发送回客户端。 **...

    Tomcat无响应问题定位流程

    如果Tomcat出现无响应的情况,通常意味着请求无法正常处理或服务器资源被过度消耗。 **一、日志分析** 1. **查看Catalina.out日志**:这是Tomcat的主要日志文件,包含启动信息、错误和警告。如果Tomcat无响应,可能...

    how tomcat work

    以下将详细介绍Tomcat的工作流程及其核心概念。 1. **Tomcat架构**: Tomcat的核心组件包括Catalina(核心引擎)、 Coyote(HTTP/1.1协议处理器)和Jasper(JSP编译器)。Catalina负责管理Servlet容器,Coyote处理...

    分析Tomcat的工作原理

    Tomcat处理请求的流程大致如下:客户端发起HTTP请求,连接器的Endpoint监听到该请求,然后由Processor处理数据并创建Request和Response对象。Adapter将这些对象转换为Servlet规范的形式,传递给Container。Container...

    tomcat 源码分析系列文档

    1. "Tomcat处理HTTP请求源码分析.doc":详细阐述了Tomcat接收到HTTP请求后,如何解析请求头、执行请求方法、构造响应的过程,包括Servlet生命周期和请求转发等。 2. "Tomcat的类载入器以及源码分析.doc":详细介绍...

    tomcat源码+文档pdf+源码解析

    例如,它们可能会详细解释如何配置server.xml文件以定制Tomcat的行为,或者如何编写自定义Valves(管道组件)来拦截和处理请求。 源码解析部分则是对Tomcat源码的深度剖析,涵盖了关键类和方法的作用、设计模式的...

    tomcat6的源码

    2. **线程模型**:Tomcat使用了多线程模型来处理并发请求。源码中的`Catalina`和` Coyote`组件涉及到了这部分内容,包括Acceptor线程和Worker线程的管理。 3. **生命周期管理**:每个Tomcat组件都有自己的生命周期...

    how tomcat works

    书中还深入探讨了Tomcat的请求处理流程,包括如何解析HTTP请求并为请求分配合适的处理器。请求处理流水线(Pipeline)是Tomcat中的一个核心概念,它定义了请求处理的顺序,通过一系列的Valve(阀门)对请求进行拦截...

    tomcat源码

    Tomcat采用基于线程的模型来处理请求,每个请求都会分配一个工作线程来执行。在`server.xml`配置文件中,可以通过`Executor`元素自定义线程池,以优化性能。 5. **JSP编译与执行** Jasper组件将JSP文件编译为Java...

    how tomcat work_中文版(源码)

    5. **调用Servlet服务方法**:Tomcat将HTTP请求封装成ServletRequest对象,响应封装成ServletResponse对象,然后调用Servlet的service()方法来处理请求。 6. **执行业务逻辑**:在service()方法中,开发者编写的...

    tomcat7源码下载

    1. catalina:这是Tomcat的核心模块,负责处理Servlet容器的主要功能,如Servlet和Context的生命周期管理,请求处理等。 2. coyote:Coyote是Tomcat的HTTP/HTTPS连接器,负责接收和发送网络请求。 3. common:这个...

    How Tomcat Works 中文版+例程源码

    源码分析部分可能包括Tomcat的启动过程、请求处理流程、线程池管理、容器结构实现以及特定Servlet的生命周期管理等方面。通过阅读源码,开发者可以深入理解Tomcat如何处理网络请求,如何调度线程,以及如何管理和...

    5.Tomcat服务器运行原理.doc

    以下是Tomcat服务器运行原理的详细说明: 1. **请求接收与解析**: 当用户通过浏览器发起HTTP请求时,Tomcat服务器接收到这个请求。请求中包含了URL、HTTP方法(GET、POST等)、头部信息和可能的请求正文。Tomcat...

    tomcat engine,host,context的管道处理——pipeline

    4. Host的Valves继续处理请求,可能涉及路由到正确的Context。 5. 请求进入Context的Pipeline,这里的Valves进行具体Web应用的业务逻辑处理。 6. 最后,响应会反向通过Pipeline,每个Valve对响应进行后处理,如添加...

    Tomcat深入剖析pdf+源码(Tomcat运行原理)

    5. **线程模型**:Tomcat使用线程池处理请求,提高了并发性能。线程池预创建一定数量的线程,以应对突发的高并发请求。 6. **连接器与管道**:Coyote连接器负责接收和发送网络数据,管道(Pipeline)则提供了灵活的...

Global site tag (gtag.js) - Google Analytics