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

Inside tomcat(一)-------你所认识的容器是怎样的?

阅读更多

最近在研究tomcat容器,打算写一系列文章和大家一起分享。本文第一篇作为引子,不涉及任何tomcat的底层实现。

 

我们知道servlet规范

规定servlet的生命周期:init->service->doXXX-->destory()。

还规定一个请求必须被封装成HttpServletRequest再由servlet的service方法来处理,并用HttpServletResponse来表示返回对象。

还规定Session必须被封装成HttpSession的形式。

Servlet规范还规定了Filter过滤器可以拦截请求做一些处理。

Servlet规范还规定了监听器Listener可以在context初始化、servlet初始化等一系列事件发生时触发一些事情。

 

Servlet规范使得我们的应用可以和底层的socket、字节流等完全隔离。

但是servlet规范只是个接口,真正使得我们实现了这些隔离的工作是由容器帮我们做的。

 

那么你所认为的容器应该是怎么样的?ServletJsp容器应该做些什么?

1:实现Servlet api规范。这是最基础的一个实现,servlet api大部分都是接口规范。如requestresponsesessioncookie。为了我们应用端能正常使用,容器必须有一套完整实现。

2:启动Socket监听端口,等待http请求。

3:获取http请求,分发请求给不同的协议处理器,如httphttps在处理上是不一样的。

4:封装请求,构造HttpServletRequest。把socket获取的用户请求字节流转换成java对象httprequest。构造httpResponse

5:调用(若未创建,则先加载)servlet,调用init初始化,执行servlet.service()方法。

6:为httpResponse添加header等头部信息。

7socket回写流,返回满足http协议格式的数据给浏览器。

8:实现JSP语法分析器,JSP标记解释器。JSPservlet实现和渲染引擎。

9JNDIJMX等服务实现。容器一般额外提供命名空间服务管理。

10:线程池管理,创建线程池,并为每个请求分配线程。

11…..

 

 

还有没有其他的事情需要容器实现的?大家补充,哈哈。

 

那么tomcat是如何实现的呢?下面将会有一系列总结和大家一起探讨哈。

 

附上一个tomcat deverloper guide,基于tomcat6的,有兴趣的大家一起研究

 

 

 

 

0
1
分享到:
评论

相关推荐

    Rust标准库内部原理(inside-rust-std-library).epub

    Rust标准库内部原理(inside-rust-std-library)

    typora-inside-theme-master.zip

    解压“typora-inside-theme-master.zip”后,你会得到一个名为“typora-inside-theme-master”的文件夹,这个文件夹包含了所有与该主题相关的资源。为了启用这个主题,你需要将其复制到Typora的主题文件夹。通常,...

    inside-asp-ney-web-api-2_inside_asp.netweapi框架揭秘_

    在.NET Framework的基础上,Web API提供了一种优雅的方式来构建可互操作的Web服务,这些服务可以被各种客户端,如浏览器、移动设备或桌面应用所调用。 Web API的核心特性包括: 1. **路由系统**:Web API使用基于...

    Inside-Delphi-2006-by-Ivan-Hladni

    Inside-Delphi-2006-by-Ivan-Hladni

    Inside C#--C#编程从入门到精通 pdg

    《Inside C#--C#编程从入门到精通》是一本深度解析C#编程语言的教程,旨在帮助初学者和有经验的程序员全面掌握C#的核心概念和技术。C#是由微软公司开发的一种面向对象的编程语言,广泛应用于Windows平台、游戏开发、...

    Warrenren#inside-rust-std-library#引言1

    引言RUST无疑是编程语言史中最难学的高级语言,在仅依靠静态编译的前提下实现一门安全的编程语言,这是必须付出的代价。无论如何,成为一门编程语言的老手的最佳办法就

    Deep Inside CSharp---An Interview with Microsoft Chief Architect Anders Hejlsberg

    Deep Inside CSharp---An Interview with Microsoft Chief Architect Anders Hejlsberg

    「大数据」hum-t10-turning-your-security-strategy-inside-out-managi

    「大数据」hum-t10-turning-your-security-strategy-inside-out-managing-insider-threat - 安全认证 数据库安全 安全研究 应急响应 零信任 安全资讯

    inside-linux-graphics-paper

    Linux图形软件栈是一个复杂的系统,它由多个开源组件构成。如同任何开源项目一样,这些组件之间存在紧密的依赖关系,从而导致版本需求。例如,X.org服务器的变化可能需要Mesa 3D驱动程序的更改,这就在两个组件间...

    k8s.gcr.io_-_阿里云_kubeadm-inside-the-great-wall.zip

    k8s.gcr.io_-_阿里云_kubeadm-inside-the-great-wall

    tomcat-8_API

    In order to grant security permissions to JARs located inside the web application repository, use URLs of of the following format in your policy file: file:${catalina.base}/webapps/examples/WEB-INF/...

    Rising - Inside Your Calculator - From Simple Programs to Significant Insights

    综上所述,《Rising - Inside Your Calculator - From Simple Programs to Significant Insights》不仅是一本深入探讨计算器内部工作机制的书籍,还旨在通过简单的程序设计引导读者进入更高级的技术领域,最终获得...

    tomcat-7_API_帮助文档

    * tomcat-jdbc.jar (Tomcat's database connection pooling solution) * tomcat-util.jar (Various utilities) * websocket-api.jar (WebSocket 1.1 API) You can make additional APIs available to all of your ...

    Inside-SQL-Query-and-Optimization.rar_inside

    《Inside SQL Query Tuning and Optimization》是针对Microsoft SQL Server 2005的一款深度解析查询优化的专业书籍。这本书旨在帮助数据库管理员和开发人员深入理解SQL Server的查询处理机制,掌握如何编写高效的SQL...

    3D-inside-3d-mesh.zip

    3D-inside-3d-mesh.zip,一种简短、合理、简单、快速且稳健的函数,用于确定一组点是否位于三维网格内,3D建模使用专门的软件来创建物理对象的数字模型。它是3D计算机图形的一个方面,用于视频游戏,3D打印和VR,以及...

    Inside-The-CPP-Object-Model.rar_inside

    《Inside The C++ Object Model》是一本深入探讨C++对象模型的专业书籍,它为我们揭示了C++编程语言在底层是如何实现面向对象特性的。在这个压缩包文件中,包含的.chm文件是这本书的一个部分或者摘要,名为“Inside ...

    Inside Windows Debugging - Practical Debugging and Tracing Strategies 无水印pdf

    Inside Windows Debugging - Practical Debugging and Tracing Strategies 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 ...

    inside-the-as400

    "inside-the-as400.tgz"这个压缩包可能包含了关于AS/400系统的详细资料,包括系统架构、操作系统特性、数据库管理、编程指南、案例研究等。通过学习这些资料,读者可以更深入地了解AS/400的工作原理和应用实践,提升...

Global site tag (gtag.js) - Google Analytics