`
serenity
  • 浏览: 62468 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

tomcat处理http请求

 
阅读更多

 

        最近这两个星期加班都比较晚,12点左右吧。现在项目的问题都处理的差不多了,抽空写下对前段时间遇到问题的思考。

       这段时间参与的这个项目,在jspaction之间交互使用VOvalue object 值对象),java与数据库之间使用POpersistant object 持久对象)。vo就是po的简化版,只有po的部分属性。此前自己做的项目都是使用同一个pojo来实现页面与actionjava与数据库之间的数据传递。这引发了我的一个思考,有没有必要创建独立的vo对象?

       我猜测原开发人员创建vo对象的初衷就是减少不必要属性的暴露,减少传输数据。但是,jsp在运行时会被编译成servlet,是在服务器端运行的,输出的是符合http协议的报文,使用vo减少不必要属性的暴露,减少传输数据的说法是不成立的。为了验证想法,有必要弄清楚web服务器处理一次请求的流程。先来分析下web服务器是怎么工作的,以tomcat处理一次servlet请求为例。

Tomcat的结构

    tomcat的结构很复杂,但是Tomcat也非常模块化。下面是tomcat的总体架构图:

 

 

从上图可以看出Tomcat的核心是两个组件:连接器(Connector)和容器(Container)。Connector组件是负责生成请求对象和响应对象的,Tomcat默认的是HttpConnector,负责根据收到的Http请求报文生成Request对象和Response对象,并把这两个对象传递给Container,然后根据Response中的内容生成相应的HTTP报文。

Container是容器的父接口,所有子容器都必须实现这个接口,简单来说就是服务器部署的项目是运行在Container中的。Container里面的项目获取到Connector传递过来对应的的Request对象和Response对象进行相应的操作。

Connector可以根据不同的设计和应用场景进行替换。一个Container可以选择对应多个Connector。多个Connector和一个Container就形成了一个Service,有了Service就可以对外提供服务了。

 

Tomcat处理请求流程

      Tomcat要为一个Servlet的请求提供服务,需要做三件事:

1、创建一个request对象并填充那些有可能被所引用的Servlet使用的信息,如参数,头部、cookies、查询字符串等。一个request对象就是javax.servlet.ServletRequestjavax.servlet.http.ServletRequest接口的一个实例。

2、 创建一个response对象,所引用的servlet使用它来给客户端发送响应。一个response对象是javax.servlet.ServletRequestjavax.servlet.http.ServletRequest接口的一个实例。

3、 调用servletservice方法,并传入requestresponse对象。这里servlet会从request对象取值,给response写值。

4、根据servlet返回的response生成相应的HTTP响应报文。

 

最后,回到原来的那个问题——在页面与action层之间创建vo来传递数据真没必要。

 

参考资料:http://blog.csdn.net/beijiguangyong/article/details/7439352

          http://www.ibm.com/developerworks/cn/java/j-lo-tomcat1/index.html

分享到:
评论

相关推荐

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

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

    解析Tomcat处理请求的类Connector<三>

    在这个系列的第三部分,我们将深入探讨Tomcat处理HTTP请求的核心组件——`Connector`类。`Connector`是Tomcat与外部世界交互的关键桥梁,负责接收并转发HTTP请求到内部的Servlet容器进行处理。 首先,我们来理解`...

    how tomcat work 中文版

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

    tomcat 源码分析系列文档

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

    tomcat工作原理深入详解

    在Tomcat处理HTTP请求时,主要涉及以下几个步骤: 1. **连接器(Connector)**:连接器负责接收来自客户端的HTTP请求,将这些请求转换为内部可以处理的格式,如创建`ServletRequest`和`ServletResponse`对象。 2. ...

    tomcat 分配请求之——socket获取请求

    标题“Tomcat分配请求之——Socket获取请求”主要涉及的是Tomcat服务器在处理HTTP请求时的核心机制。在Web服务器中,Tomcat是一个广泛使用的开源应用服务器,它负责解析并响应来自客户端(如浏览器)的HTTP请求。这...

    Android客户端上传数据到tomcat服务端的源码

    1. Servlet:Tomcat处理HTTP请求的核心是Servlet,需要编写一个Servlet来接收并处理来自Android客户端的POST请求。 2. doPost方法:在Servlet中,重写doPost方法,解析请求体获取数据。对于Multipart/form-data,...

    tomcat源码资源包

    这一步骤对于开发者来说极其重要,因为通过查看源码,开发者可以更深入地理解Tomcat处理HTTP请求、管理Servlet、部署Web应用程序以及执行其他核心功能的方式。 Tomcat源码的主要组成部分包括以下几个关键模块: 1....

    HowTomcatWork 源代码

    Coyote是Tomcat处理HTTP请求的核心,它监听端口,接收请求,将其转化为内部格式,然后传递给Catalina进行处理。同时,它也负责将Catalina的响应结果转换回HTTP响应,发送回客户端。 6. **线程模型** Tomcat使用多...

    tomcat发送https请求配置

    Tomcat 发送 HTTPS 请求配置 Tomcat 是一个流行的 Web 服务器软件,用于部署基于 Java 的 Web 应用程序。为了确保数据传输的安全性,需要使用 HTTPS 协议来加密数据。在本文中,我们将介绍如何配置 Tomcat 来发送 ...

    How_Tomcat_Works中文版

    #### 三、Tomcat处理HTTP请求的过程 当Tomcat接收到HTTP请求时,处理流程如下: 1. **接收请求**:Connector监听特定端口上的网络连接,一旦检测到新的客户端连接请求,就会创建一个新的线程或使用线程池中的现有...

    tomcat 源代码

    Coyote是Tomcat处理HTTP请求和响应的核心。它监听端口,接收请求,将请求数据转换为内部格式供Catalina处理,同时将Catalina的响应转换回HTTP响应并发送给客户端。 4. **Jasper JSP引擎** Jasper解析JSP文件为...

    Tomcat请求处理UML序列图

    - **service()**:Servlet的`service()`方法被调用,处理HTTP请求并生成响应。 ##### 4. 响应生成与返回 - **allocate()**:在生成响应之前,可能还需要进行资源分配。 - **returnservlet**:Servlet生成响应后,...

    tomcat8.0源码+catalina-home.rar

    2. **lib**:这个目录下存放了Tomcat运行所需的JAR文件,包括Servlet API、JSP API以及其他必要的库,它们是Tomcat处理HTTP请求和执行Servlet的重要依赖。 3. **logs**:记录Tomcat运行时的日志信息,对于调试和...

    tomcat connectors

    标题中的“tomcat connectors”指的是Apache Tomcat服务器的连接器组件,这些组件是Tomcat处理HTTP请求和响应的核心部分。在Tomcat服务器中,主要有两种连接器: Coyote(用于处理HTTP/1.1)和Apr(Apache Portable ...

    WEB服务器工作机制由浅至深(2):【How Tomcat Works】1~4章翻译分析

    第三章讲解了Tomcat处理HTTP请求的流程。当一个HTTP请求到达Tomcat时,它首先由Connector接收,然后通过ProtocolHandler将请求数据转换为内部结构。接下来,Request对象被创建并封装请求信息,而Response对象则用于...

    Tomcat+MySQL为自己的APP打造服务器(4)完结篇Demo

    总结来说,这个"Tomcat+MySQL为自己的APP打造服务器(4)完结篇Demo"涵盖了Android应用开发中的关键部分:服务器端的Tomcat处理HTTP请求并与MySQL数据库交互,以及Android客户端如何安全、高效地与服务器通信。...

    apache-tomcat-5.5.20和apache-tomcat-5.5.20-admin

    - **功能**:作为Servlet和JSP容器,Tomcat处理HTTP请求,解析请求并调用相应的Servlet或JSP页面来生成响应。 - **版本历史**:5.5.x系列是Tomcat的长青分支,引入了许多性能优化和稳定性改进。 - **配置**:...

    tomcat+php 所需jar包

    - **Servlet API**:这是Tomcat处理HTTP请求的核心,提供了Servlet和JSP的接口定义。 - **JSP API**:用于处理JSP页面的转换和执行,使得开发者可以使用HTML语法来编写动态内容。 - **Quercus**:如果这个集成...

    Professional Apache Tomcat 6

    10. **第10章:HTTP连接器** - 介绍了Tomcat处理HTTP请求的方式,包括AJP和SSL的支持。 11. **第11章:Tomcat与Apache HTTP服务器** - 讨论了Tomcat与Apache的集成方式,实现更强大的Web服务。 12. **第12章:...

Global site tag (gtag.js) - Google Analytics