同上篇文章(JDBC设计模式)类似,也是谈设计模式,不过这次要谈的是Tomcat。
在面试中,如题。
我当时回答的是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等实现中,大量使用。
笔者知识和时间有限,请大家添加、讨论和指正,谢谢。
分享到:
相关推荐
Tomcat的设计模式分析 很好的资料,值得看看
Tomcat 系统架构与设计模式,第 1 部分 工作原理
介绍tomcat系统架构与设计模式的书籍,希望对大家有帮助
Tomcat_系统架构与设计模式,Tomcat_系统架构与设计模式
Tomcat系统架构与设计模式[整理].pdf
Tomcat 系统架构与设计模式,第 1 部分: 工作原理1
描述tomcat的三种运行模式,以及其相应的配置方法
本文以 Tomcat 5 为基础,也...Tomcat 的基本设计思路和架构是具有一定连续性的。 Tomcat 总体结构 Tomcat 的结构很复杂,但是 Tomcat 也非常的模块化,找到了 Tomcat 最核心的模块,您就抓住了 Tomcat 的“七寸”。
Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析1
Java详解Tomcat 的设计模式分析.doc
从标题看上去很大,Tomcat很复杂,不是一篇文章就能说清楚的,就算我想说恐怕我也说不清楚,我主要是想知道Tomcat如何分发请求的,如何处理多用户同时请求的,还有他的容器是如何工作的。这也是一个Web服务器要解决...
Tomcat中运用的许多经典设计模式,如模版模式、工厂模式和单例模式等。通过学习它们的实践运用能给我们以后的程序设计起到一定的借鉴作用。外观设计模式在Tomcat中有多处使用,在Request和Response对象封装中、...
tomcat4 源码学习,深度剖析tomcat一书的指定tomcat版本,随着tomcat版本的升级,内容发生 了变化,但为了读懂书籍,还是得使用老版本得源码,欢迎大家下载,官网下载会出现下载不了的情况,我主页有tomcat4-tomcat9...
Java面试专题-面试人员必看-微服务架构面试专题系列:Tomcat+Mysql+设计模式+并发+Netty+JVM
Tomcat_系统架构与模式设计分析.doc 构建高扩展性程序的参考!
Tomcat系统架构与设计模式.pdf
Spring源码分析,web源码分析,Tomcat架构源码分析都是非常深入的源码级课程,期待研究设计模式和深入学习源码内功的朋友们,一定要仔细的学习研究。 (0);目录中文件数:1个 ├─3.代码.zip (1)\1.笔记;目录中文...
tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat最新客户端tomcat...