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

解析Tomcat之HttpServlet(截图记录)

阅读更多


  新年之际,正好趁着休息分析了一下tomcat,平时用得多,没怎么想过具体的实现过程。 今天正好看看其内部实现,就先从最常用的类开始分析起 HttpServlet. (如果图片不清楚,请点击看大图 )

   另外,加一个连接  tomcat源代码编译与eclipse导入

       首先看看HttpServlet的UML图:

 

 看到最顶层的是2个接口 Servlet 和ServletConfig.

 

 



 




 


==================================================================


接下来是HttpServlet父类;

 

 



 
 ======================================================


HttpServlet 类


  

 

其中service 方法:





  OK,截图下来,以方便以后查阅, 文章仅限自己记录,所以几乎没有文笔组织,都在截图里了。

  • 大小: 107.7 KB
  • 大小: 23.9 KB
  • 大小: 83.4 KB
  • 大小: 36.6 KB
  • 大小: 15 KB
  • 大小: 56.8 KB
  • 大小: 100.2 KB
  • 大小: 95.2 KB
  • 大小: 36.2 KB
  • 大小: 80.2 KB
  • 大小: 146.6 KB
  • 大小: 95.2 KB
  • 大小: 38.8 KB
  • 大小: 55.6 KB
  • 大小: 121 KB
分享到:
评论
13 楼 gogole_09 2010-01-04  
曾经de迷茫 写道
mercyblitz 写道
这个和Tomcat关系不大,都是一些与Servlet相关的接口和类

LZ有标题党之嫌·

  确实是一些servlet的接口和类, 当时定这个标题是因为在看tomcat源代码才写的。 这些只是从源代码中javax包中看到的东西,并非有意"标题党“ - -!
12 楼 gogole_09 2010-01-04  
rmn190 写道
gogole_09 写道
qtalen 写道
楼主用什么插件画的UML,开源吗?

是个开源的, UDOC, 不过现在好像没有维护了, 这里有这个东西的一个简短介绍。
http://user.qzone.qq.com/330836030/infocenter?ptlang=2052 我的QQ空间



看不了你的关于UML插件的描述啊, 能不能也转下,放到这里呢?

谢谢!


已经转到javaeye了, 地址在这里。
http://gogole.iteye.com/blog/562338
11 楼 曾经de迷茫 2010-01-04  
mercyblitz 写道
这个和Tomcat关系不大,都是一些与Servlet相关的接口和类

LZ有标题党之嫌·
10 楼 mercyblitz 2010-01-04  
这个和Tomcat关系不大,都是一些与Servlet相关的接口和类
9 楼 rmn190 2010-01-04  
gogole_09 写道
qtalen 写道
楼主用什么插件画的UML,开源吗?

是个开源的, UDOC, 不过现在好像没有维护了, 这里有这个东西的一个简短介绍。
http://user.qzone.qq.com/330836030/infocenter?ptlang=2052 我的QQ空间



看不了你的关于UML插件的描述啊, 能不能也转下,放到这里呢?

谢谢!
8 楼 xici_magic 2010-01-03  
不错的 受教了。
7 楼 gogole_09 2010-01-03  
wujiazhao88 写道
xietingyan 写道
我觉得service那个里面要用switch

可惜1.6及其以前版本的String是不支持switch的,当然可以用int或者其他基本数据,但是那个method也是从客户端传过来的,也需要将其if..else转成int之类的东西后才能switch,所以直接用if...else就行了啊。。
那几个方法doGet,doPost,doHead..等等都是对应HTTP协议里面的GET,POST,HEAD等方法的。

是这样的, 因为已经定义对应的是字符串类型。 所以不支持switch的。 如果说需要做优化的话,我倒是有一种个人想法, 放到key-value 映射表里面可能会更好一点,这样更利于减少程序分支,当然,这样做可能有其他的代价没有考虑。既然tomcat里面原本就是采用最简单的if,else 实现, 相信应该有其道理的。
6 楼 gogole_09 2010-01-03  
songfantasy 写道
一看就是eclipse的插件,uml,或uml2

是Udoc ,一个用AWT实现的开源UML工具。
好像目前没有做成eclipse插件,也没看到相关的资料……
5 楼 wujiazhao88 2010-01-03  
xietingyan 写道
我觉得service那个里面要用switch

可惜1.6及其以前版本的String是不支持switch的,当然可以用int或者其他基本数据,但是那个method也是从客户端传过来的,也需要将其if..else转成int之类的东西后才能switch,所以直接用if...else就行了啊。。
那几个方法doGet,doPost,doHead..等等都是对应HTTP协议里面的GET,POST,HEAD等方法的。
4 楼 xietingyan 2010-01-03  
我觉得service那个里面要用switch
3 楼 songfantasy 2010-01-03  
一看就是eclipse的插件,uml,或uml2
2 楼 gogole_09 2010-01-02  
qtalen 写道
楼主用什么插件画的UML,开源吗?

是个开源的, UDOC, 不过现在好像没有维护了, 这里有这个东西的一个简短介绍。
http://user.qzone.qq.com/330836030/infocenter?ptlang=2052 我的QQ空间
1 楼 qtalen 2010-01-02  
楼主用什么插件画的UML,开源吗?

相关推荐

    Tomcat下HttpServlet的Web应用工程

    【标题】"Tomcat下HttpServlet的Web应用工程"是一个基于Java J2EE技术的Web项目,它在Tomcat7服务器环境下运行。这个项目利用了Eclipse 4.4作为集成开发环境(IDE),展示了如何在Linux操作系统中构建和部署Web应用...

    apache-tomcat-5.5.23-fulldocs

    Tomcat作为Servlet容器,其主要任务是解析HTTP请求,执行与之关联的Servlet,并将Servlet的响应返回给客户端。Java Servlet是Java语言编写的一个服务器端程序,用于扩展Web服务器的功能。JSP则是Servlet的一种简化...

    运行tomcat源码所要添加的jar包

    6. **tomcat-util.jar**:Tomcat内部使用的工具类库,包含线程池、URL解码、XML解析等功能。 7. **tomcat-coyote.jar**:Coyote是Tomcat的HTTP/HTTPS连接器,处理网络I/O,提供与HTTP协议交互的能力。 8. **tomcat...

    TOMCAT权威指南(第二版).pdf

    - Tomcat使用`catalina.out`、`localhost.log`、`host-manager.log`等日志文件来记录服务器运行过程中的信息。 ### 三、Tomcat性能调优 #### 3.1 连接器优化 - 调整连接器的参数(如线程池大小、最大连接数等),...

    tomcat GET请求与POST请求

    当客户端发送一个GET或POST请求到Tomcat时,服务器会通过Servlet容器解析请求,然后根据请求方法调用相应的Servlet方法。对于GET请求,Servlet的`doGet()`方法会被调用;而对于POST请求,对应的则是`doPost()`方法。...

    andorid人员文件上传服务器的搭建(tomcat中)

    3. 实现FileUploadServlet:创建一个Java类,继承HttpServlet,处理POST请求并实现文件上传逻辑。可以使用Apache Commons FileUpload库来简化文件上传操作。首先,将该库的jar文件添加到项目的类路径中。 三、处理...

    apache-tomcat源码

    Apache Tomcat是一款开源的Java Servlet容器,主要用于实现JavaServer Pages (JSP)、Java Servlet以及WebSocket等技术。它是Apache软件基金会的一个项目,以其轻量级、高效和稳定性著称。在深入理解Apache Tomcat...

    第19章 Tomcat服务器和Servlet.pdf

    - 目录结构:bin目录存放可执行文件,conf包含关键配置文件如`server.xml`和`web.xml`,lib存放运行所需的jar文件,logs记录日志,temp存放临时文件,webapps存放web项目。 三、Servlet【重点】 3.1 Servlet概念 ...

    jsp下的jar包, 一共五个

    5. **jasper.jar**:Tomcat服务器(或其他兼容的Servlet容器)的一部分,负责JSP的编译工作,将JSP页面转换为Java源代码,然后编译成Servlet。 6. **jsp-api-*.jar**和**jsp-impl-*.jar**:有时,容器会区分JSP API...

    JAVA程序员面试常用试题总结

    **Tomcat目录结构解析:** - **bin**:包含启动、关闭Tomcat的脚本和其他管理工具。 - **lib/classes**:放置Tomcat和应用都能访问的类库。 - **common**:共享的JAR文件存放处。 - **conf**:存储Tomcat的主要配置...

    心理测试网站

    Servlet通过继承HttpServlet类并重写doGet()或doPost()方法来实现具体的处理逻辑。 3. **Tomcat服务器**: Tomcat是一款开源的、轻量级的Java应用服务器,它实现了Java Servlet和JavaServer Pages(JSP)规范。在...

    动态网页(jsp+Servlet)

    编写Servlet通常涉及实现Servlet接口或继承HttpServlet类,通过重写doGet或doPost方法来处理请求。Servlet的生命周期包括加载、初始化、服务、销毁四个阶段,理解这些阶段对于优化性能和管理资源非常重要。 JSP是...

    jsp运行时的问题集合

    Tomcat是常用的Java Web服务器,该文件可能记录了Tomcat启动、部署、配置、性能调优等方面的问题及其解决方案。 9. **tomcat6.0问题.txt** 特定版本的Tomcat(如6.0)可能会有特定的兼容性或配置问题,文件可能...

    Javaweb开发常用JAR包

    Tomcat库中的JARs,如`tomcat-coyote.jar`, `tomcat-util.jar`等,提供了Servlet容器的功能。 9. **Log4j JAR**:Log4j是一个日志记录框架,为Java应用程序提供灵活的日志记录服务。`log4j.jar`包含日志记录的API,...

    基于Java的一个支持servlet的web服务器.zip

    在实际开发中,我们通常使用像Tomcat这样的开源Servlet容器来运行Java Web应用。Tomcat遵循Servlet和JSP规范,提供了一个轻量级且高效的环境。然而,创建自己的基于Java的Web服务器可以加深对HTTP协议、Servlet生命...

    网上书店系统BOOKSTORE

    在本系统中,Tomcat负责解析和执行JSP文件,同时为Servlet提供运行环境。用户需要先在本地安装Tomcat服务器,然后将网上书店系统的WAR文件(Web应用归档文件)部署到Tomcat的webapps目录下,启动服务器后即可访问...

    JavaWeb开发jar包大全

    7. **Apache Tomcat** 相关:`tomcat-juli.jar`, `tomcat-coyote.jar`, `tomcat-util.jar` 等 - 这些是Apache Tomcat服务器的组成部分,提供了服务器的日志处理、连接器和工具类等功能。 8. **Spring框架**:`...

    图书交换网站

    在这个图书交换系统中,Tomcat负责解析HTTP请求,调用Servlet处理,然后将响应返回给客户端。开发者需要将项目部署到Tomcat服务器上,通过启动服务器来运行整个系统。 至于“图片上传功能”,这通常涉及到文件上传...

    JAVA 开发博客系统网站(JSP+SERVLET+MYSQL).zip

    下面将详细解析这个项目的各个组成部分以及相关的知识点。 **JSP(JavaServer Pages)** JSP是Java的一种动态网页技术,它允许开发人员在HTML或XML文档中嵌入Java代码。JSP页面在服务器端执行,将结果转换为HTML...

    java开发的宿舍管理系统源码

    系统部署在Tomcat8上,负责解析HTTP请求,执行Servlet并返回响应。 5. **Bootstrap**:Bootstrap是流行的前端开发框架,提供了一系列预设的CSS样式和JavaScript组件,简化了网页设计。在这个项目中,Bootstrap用于...

Global site tag (gtag.js) - Google Analytics