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等实现中,大量使用。

转载于:https://blog.51cto.com/tetop/371677

Tomcat的设计模式相关推荐

  1. java开发一年多少钱_4年Java程序员:月薪不过3万,就不要拿命换钱了

    TIOBE 公布 2020 年 9 月的编程语言排行榜:Java占有率继续下降,从上个月的14.43%降到13.48%,同比下降3.18%. 在Java的学习群里,问到大家工作3-5年的瓶颈,回答基本 ...

  2. 一个五年架构师凭什么基本年薪酬就可以达到50万

    架构师,我想很多人都知道,其实该职位头衔在最早的IT领域是没有的,它是近些年来由互联网的发展所引发的需求,因为现阶段的数据量及高并发的活跃好动,引起了不少传统的技术人员的力不从心,企业愈发关注到了系统 ...

  3. 含泪拿下腾讯60W Offer,五轮面试,六个小时,灵魂拷问,扶我起来我还能再战

    在互联网做了几年之后,去大厂"镀镀金"是大部分人的首选.大厂不仅待遇高.福利好,更重要的是,它是对你专业能力的背书,大厂工作背景多少会给你的简历增加几分竞争力. 但说实话,想进大厂 ...

  4. Java 面试的“完美圣经”,有了这些还愁面试吗?

    经过 20 多位一线互联网大厂老师整合最新的 Java 架构师面试题后,成功总结出了这份 Java 架构师面试 PDF,我愿意称它为 Java 面试的"完美圣经"! 如果同学们对这 ...

  5. 金九银十!字节跳动三轮面试惨败,总结面试经验,下次再战!

    写在开篇 和往年相比,今年的秋招看上去不是那么顺利,多少都受疫情有所影响,但是令我惊讶的是第一家给我面试机会的公司竟然是宇宙条.一开始接到面试通知时,心情特别复杂,紧张又兴奋,字节跳动是出了名的考算法 ...

  6. 字节跳动 Java 后端岗,三轮面试,四个小时,灵魂拷问,结局我哭了但下次还敢

    第一轮面试:1 小时 28 分钟 自我介绍 数据库索引的作用是什么? 段页式 虚拟内存 缺页中断 Major/Minor page fault 区别 TLB 作用 进程/线程和虚拟内存的关系 x86 ...

  7. 字节跳动,三轮面试,四个小时,灵魂拷问,结局我哭了但下次还敢...

    写在开篇 去年的秋招对于我来说,那是非常的不顺利,所以今年的春招其实我也没有抱太大的希望,令我惊讶的是第一家给我面试机会的公司竟然是宇宙条.一开始接到面试通知时,心情特别复杂,紧张又兴奋,字节跳动是出 ...

  8. 我凭借这份999页Java面试pdf!拿下了美团、蚂蚁金服、腾讯、字节跳动offer

    前言 事情是这样的,2020年9月份,在某个大博主那里拿到一份Java面试宝典,然后就一直躺在盘里吃灰,直到11月份的时候,有了要跳槽的计划和打算,就想着要刷刷面试题,所以就把这套"积灰&q ...

  9. 大腿拍断!足足闭关一个月肝完999页Java面试宝典,心灰意冷之际意外收到美团Offer!

    前言 事情是这样的,今年年初,在某个大博主那里拿到一份Java面试宝典,然后就一直躺在盘里吃灰,直到5月份的时候,有了要跳槽的计划和打算,就想着要刷刷面试题,所以就把这套"积灰"的 ...

  10. Tomcat 系统架构与设计模式,第 1 部分: 工作原理

    Tomcat 系统架构与设计模式,第 1 部分: 工作原理 这个分为两个部分的系列文章将研究 Apache Tomcat 的系统架构以及其运用的很多经典设计模式.本文是第 1 部分,将主要从 Tomc ...

最新文章

  1. redmine mysql配置_Redmine安装指南一:railsinstaller+apache+mysql(推荐)
  2. 制作win2000能用的 schtasks.exe
  3. SQL常用字符串函数
  4. getdata提取曲线数据_Origin如何从图表中获取数据
  5. C++中4种强制类型转换 ?
  6. mysql导入数据load data infile用法整理
  7. c++中的new_handler
  8. python基础3——运算符
  9. python 购物车程序_购物车程序python
  10. 目标反射回波检测算法及其FPGA实现 之二:互相关/卷积/FIR电路的实现
  11. 博途v16tia项目服务器,博途V16与scout TIA
  12. 解析Disruptor:写入ring buffer
  13. 善用工具和网上资源-决定学习的效率
  14. 简约的手机APP自适应下载页HTML源码
  15. 锐浪报表 Grid++Report 免注册DLL C/S报表开发(二)清单文件manifest分析
  16. 【Jmeter】Jmeter java.lang.IllegalAccessError: class com.github.weisj.报错
  17. pdf怎么转换成图片格式
  18. css媒体查询详解(自测可用)
  19. PCB叠层排布原则以及AD中如何设计叠层
  20. UIAlertController Extention

热门文章

  1. MSIL实用指南-struct的生成和操作
  2. linux 设置tomcat快捷启动方式
  3. codevs4919 线段树练习4
  4. 浅谈FMA与SMA(test)
  5. Myeclipse8.5 最新注册码以使用方法(可以用到2015年!!!)
  6. 指针 多维数组 数组指针 指针数组
  7. VS2010 让你的Javascript代码可以折叠
  8. kubernetes 1.14安装部署metrics-server插件
  9. UUIDGenerator
  10. 【沫沫金】Sql子查询Not In 无结果原因