在面试中,如题。 我当时回答的是Mediator模式,好比调制解调器,就是常说的“猫”,通过模拟信号到电子信号。那么Tomcat也是如此,接收和解析的HTTP请求,封装成HttpServletRequest对象。
当时比较紧张,可能没有把题目吃透,那么这里我解释一下。
Tomcat是Servlet/JSP规范的RI,那也就说Servlet里面用到哪些设计模式?同时也有其特殊功能性。
责任链模式:java.servlet.FilterChain是典型责任链模式应用。所有的javax.servlet.Filter接口实现,都会被加入到条链子,在链子末尾就是URL mapping的资源,可能是您的Servlet或JSP类,或者是org.apache.catalina.servlets.DefaultServlet。
事件监听模式:所有的Listener的注册,在Tomcat的实现中,比如org.apache.catalina.core.StandardContext(ServletContext的实现),当你的ServletContext(也就是WebApp)fire所有的ServletContextListener的contextInitialized方法。
解释器模式:大家都知道,所有的JSP页面都需要进行translate成Servlet的Java Code。
Service Locator:Tomcat支持JDNI,那么通过命名空间能够得到相应的服务,比如JDBC连接池。 观察者模式:Tomcat支持Session复制,把Session信息复制到其他节点,也称为发布-订阅模式。 拦截器模式:javax.servlet.Filter就是一种URL的拦截。
模板方法:java.servlet.GenericServlet定义了模板方法,同时,javax.servlet.http.HttpServlet提供了默认的模板实现,HttpServlet的子类,不直接实现或者override了service方法,类似于doGet,doPost等等。
单例模式:所有的Filter,Servlet和Listener的实现类,其对象均被ClassLoader加载后,放入对应的WebApp,这里不是说Tomcat的JVM只有一个实例。因为N个WebApp可以加载同一个类,那么就有N个对应的实例,这个是由于Tomcat的ClassLoader机制决定的-WebApp的Classloader相对独立。
装饰器模式:javax.servlet.http.HttpServletRequestWrapper类。
访问者模式:JSP的解析器,Jasper框架利用的Visitor模式来解析HTML和XML格式的JSP文件。其中org.apache.jasper.compiler.Node.Visitor是Visitor类,那么org.apache.jasper.compiler.Node是Visitable类。
策略模式:通过web.xml配置、JSP文件指令或者扩张名,Jasper选择不同的算法,选择采用HTML方式,还是XML的解释方式,生成Java源代码。
组合模式:HttpServletRequest实现类中,组合了org.apache.catalina.Context 的实现类(org.apache.catalina.core.StandardContext)。
代理模式:ServletContext的实现类-org.apache.catalina.core.ApplicationContext,其是一个代理类,其处理交给了org.apache.catalina.core.StandardContext。
门面模式:在ServletContext等实现中,大量使用。
Java EE模式中,还有一些Tag方面的,ViewHelper模式等等
笔者知识和时间有限,请大家添加、讨论和指正,谢谢。
分享到:
相关推荐
Tomcat 系统架构与设计模式,第 1 部分 工作原理
Tomcat 系统架构与设计模式 Tomcat 系统架构是 Apache 软件基金会的一款开源的 Java Web 服务器,它的架构设计非常复杂,具有很强的模块化特点。本文将从 Tomcat 的工作原理、设计模式两个方面来分析 Tomcat 的...
Tomcat 系统架构与设计模式,第 1 部分:工作原理 本文将从 Tomcat 系统架构与设计模式的角度,探讨其工作原理的第 1 部分,我们将从以下几个方面进行讨论: 1. Tomcat 系统架构概述 Tomcat 是一个基于 Java 的...
介绍tomcat系统架构与设计模式的书籍,希望对大家有帮助
Tomcat 系统架构与设计模式,第 2 部分:设计模式分析 1 本文将对 Tomcat 系统架构与设计模式进行深入分析,着重介绍设计模式在 Tomcat 中的应用。 标题:Tomcat 系统架构与设计模式,第 2 部分:设计模式分析 1 ...
欢迎使用Apache Tomcat!它是什么? ApacheTomcat:registered:软件是Java Servlet,JavaServer Pages,Java Expression Language和Java WebSocket技术的开源实现。 Java Servlet,JavaServer Pages,Java Expression...
APR是专门为提高Tomcat性能而设计的一种运行模式。APR利用了本地库的性能优势,可以显著提升Tomcat的性能,特别是在处理大量并发连接的情况下。为了启用APR模式,首先需要在系统中安装APR库,然后在编译或部署Tomcat...
Java中的Tomcat是一个广泛应用的开源Web服务器和Servlet容器,其设计模式的巧妙运用对于理解和优化软件架构至关重要。本文主要分析了Tomcat中两种主要的设计模式:门面模式和观察者模式。 1. 门面(Facade)设计...
Connector组件的可替换性是Tomcat设计的一大特点,这使得开发者可以根据不同应用场景选择合适的Connector,以优化性能或兼容性。例如,Tomcat提供了基于NIO(非阻塞I/O)和BIO(同步阻塞I/O)的不同Connector实现。 ...
本文以 Tomcat 5 为基础,也...Tomcat 的基本设计思路和架构是具有一定连续性的。 Tomcat 总体结构 Tomcat 的结构很复杂,但是 Tomcat 也非常的模块化,找到了 Tomcat 最核心的模块,您就抓住了 Tomcat 的“七寸”。
本面试专题涵盖了微服务架构中的关键组件,包括Tomcat、Mysql、设计模式、并发处理、Netty以及JVM。以下是这些主题的详细说明: 1. **Tomcat**:作为Java Servlet容器,Tomcat是Web应用程序的基础。了解其工作原理...
在这个面试专题系列中,我们将聚焦于Tomcat、MySQL和设计模式这三个核心领域,这些都是Java开发者在面试中常常被问及的话题。 首先,让我们深入探讨Tomcat。Tomcat是一款开源的Servlet容器,它是Apache软件基金会...
Java筑基面试专题系列是针对Java开发者准备的基础面试知识,主要涵盖了三个核心领域:Tomcat、MySQL和设计模式。这三者在Java开发中都扮演着至关重要的角色,是任何Java程序员都需要掌握的基础技能。 首先,让我们...
从标题看上去很大,Tomcat很复杂,不是一篇文章就能说清楚的,就算我想说恐怕我也说不清楚,我主要是想知道Tomcat如何分发请求的,如何处理多用户同时请求的,还有他的容器是如何工作的。这也是一个Web服务器要解决...
Spring源码分析,web源码分析,Tomcat架构源码分析都是非常深入的源码级课程,期待研究设计模式和深入学习源码内功的朋友们,一定要仔细的学习研究。 (0);目录中文件数:1个 ├─3.代码.zip (1)\1.笔记;目录中文...