这节来说个大家都比较熟悉的东西,就是servlet三大组件,servlet、filter、listener,再说说springboot的内置tomcat。

  也许还会说一下tomcat的运行原理,还有,springboot不是不支持jsp吗(是因为嵌入式tomcat的原因),那我就让springboot支持jsp,其他的还是一样。

  比较长,可能要分为两节。

1.servlet配置

  想必大家不会陌生servlet配置,写个类继承HttpServlet,然后在原来的web.xml文件中配置还有配置servlet的映射路径,忘记的小伙伴就回头看看啊。

  现在的springboot配置servlet,也差不多,写个servlet,但是记住,springboot不能直接识别servlet,需要借助一个工具ServletRegistrationBean(xxxBean在学spring的时候应该很常见,本质上还是一个Bean,但是有能够生产bean的能力,类似一个简单的工厂类)

  

  我们接着随意找个配置类(我图方便,就在那个main方法的主配置类加了),加入如下代码:

  

  ok,就这样,然后运行,浏览器输入网址

2.配置Filter

  配置和上面差不多,写个Filter实现类,利用FilterRegistrationBean往容器里添加filter

  

  然后运行springboot,输入xxxxx/hehe就行了

3.配置listener

  listener最容易,因为前面两个还有配置url映射,这个listener不用配。写个listener,利用ServletListenerRegistrationBean添加到容器里。

  启动和关闭应用就能看到结果:

最后的就是注意ServletListenerRegistrationBean这个类要传入泛型,打开这个类,可以看到我们可以定制监听器的类型

4,简单说说嵌入式servlet容器(springboot默认当然是用tomcat)

  springboot应用和以前的ssm等应用最大的不同是,springboot可以打成jar包,然后在装有java运行环境的电脑,就能用java -jar xxx.jar就能够直接运行一个springboot应用,非常方便,但是缺点是不支持jsp;

  而ssm、ssh等的就要达成war包,然后在新的电脑上配置java环境,下载tomcat,再配置tomcat和java的版本,然后才能部署应用,运行,emmmm....估计要很久!

  造成这种结果的最大原因就是springboot装的是小tomcat(咳咳,这是我自己为了方便理解才说的,标准称呼是嵌入式servlet容器,英文全程:EmbeddedServletContainer),以下假如看到小tomcat,就要理解是嵌入式servlet容器啊(EmbeddedServletContainer),这么长的单词一定要记下来,因为后面会有更长的.....

  首先简单说说servlet容器种类。常见的Tomcat(springboot默认),Jetty(适用于长连接,比如聊天这种),Undertow(不支持jsp,但是并发性能非常好),各有优势。

  打开pom配置文件,可以看到

然后将tomcat变为jetty就可以了,maven就会自动帮你下载对应的jar包

  运行springboot,控制台输出如下所示,你就成功了。

  到这里,springboot配置servlet三大组件以及切换嵌入式servlet容器就讲完了,接下来干什么想必都很清楚,当然是怎么修改容器的默认配置以及运行原理啊!

  不知道大家有没有发现上图端口是8081(默认8080),在配置文件是怎么配置的(以前说过,估计很多人都知道),为什么会起作用?我能不能用@Bean的方式修改容器默认参数呢?以及其中的运行原理?当然,也会带着大家一起走走从主配置类开始,通过一个run方法,逐渐的就运行容器的过程。

  后面还会说说不用嵌入式servlet容器的方式,我就用我外界下载的tomcat和springboot应用一起用,并且还支持jsp。

转载于:https://juejin.im/post/5bed819de51d450df867cc6d

java小新人 带着萌新看springboot源码相关推荐

  1. 带着萌新看springboot源码02

    一节在springboot中配置了servlet三大组件以及嵌入式servlet容器,并且还简单的说了如何切换不同的容器. 这一节就来说说如何改变servlet容器的配置参数,一般有两种常见的方式,第 ...

  2. 啦啦外卖V45.9稳定运营独立版+公众号+小程序前端 +APP前端+新授权接口 源码安装测试教程

    啦啦外卖V45.9稳定运营独立版,是一款针对本地生活服务的外卖点餐系统,支持单店版.多店版.平台版等多种场景使用,使用的都知道该系统功能非常强大,是目前外卖平台功能最全的一套系统.播播资源测试安装的源 ...

  3. 小编带着小白看springboot源码2

    上一节讲到先创建maven项目,然后导入依赖,主配置类等步骤,现在来个快速创建一个springboot模板,不需要向上节那么繁琐. 1.快速创建springboot应用   IDEA---->f ...

  4. 小编带你两图看清北京大厂公司、码农分布——谷歌,微软,百度,腾讯,阿里,滴滴,美团,头条,独角兽

    小编带你两图看清北京大厂公司.码农分布--谷歌,微软,百度,腾讯,阿里,滴滴,美团,头条 ​ 北京一二线大厂公司.码农分布 年关将至,意味着2021年即将过去,2022年即将到来 现在,就是大家开始为 ...

  5. 一点一点看JDK源码(四)java.util.ArrayList 中篇

    一点一点看JDK源码(四)java.util.ArrayList 中篇 liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 1.综述 在前篇中 ...

  6. 面试官系统精讲Java源码及大厂真题 - 41 突破难点:如何看 Lambda 源码

    41 突破难点:如何看 Lambda 源码 引导语 大家都知道 Java8 中新增了 Lambda 表达式,使用 Lambda 表达式可以对代码进行大量的优化,用几行代码就可以做很多事情,本章以 La ...

  7. 面试有没有看过spring源码_如何看Spring源码、Java每日六道面试分享,打卡第二天...

    原标题:如何看Spring源码.Java每日六道面试分享,打卡第二天 想要深入的熟悉了解Spring源码,我觉得第一步就是要有一个能跑起来的极尽简单的框架,下面我就教大家搭建一个最简单的Spring框 ...

  8. 面试官系统精讲Java源码及大厂真题 - 12 彰显细节:看集合源码对我们实际工作的帮助和应用

    12 彰显细节:看集合源码对我们实际工作的帮助和应用 更新时间:2019-09-17 10:19:41 劳动是一切知识的源泉. --陶铸 本节中,我们先跳出源码的视角,来看看集合类的类图,看看在设计层 ...

  9. 一点一点看JDK源码(二)java.util.List

    一点一点看JDK源码(二)java.util.List liuyuhang原创,未经允许进制转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 1.综述 List译为表,一览表, ...

最新文章

  1. Spring注解Annotation
  2. PHP 规范之编程规范
  3. 三次握手和四次挥手图解_三次握手和四次挥手简单理解
  4. Win11笔记本电源计划怎么设置 Win11设置电源计划为高性能的方法
  5. KLT(Kanade-Lucas-Tomasi )
  6. 卡尔曼滤波对gps轨迹数据清洗_基于GPS的智能交通系统车辆定位精度提升技术
  7. 【报告分享】2021制造业数字化转型路线图.pdf(附下载链接)
  8. 拜登重安全,白宫埋彩蛋:Coder,我们需要帮助!
  9. python一年一度的校园好歌声_歌声满校园
  10. 190129每日一句
  11. 各大搜索引擎提交入口
  12. 5款App帮你创建时间轴
  13. ui测试怎么做?依据文档有哪些_软件开发流程涉及到哪些文档?其中有你需要了解的外包开发中的猫腻...
  14. 七种寻址方式(立即寻址、寄存器寻址)
  15. python接口自动化13-流量回放
  16. Python重试机制模块:tenacity
  17. 移动硬盘和电脑内置硬盘使用时的区别
  18. 全自动棉纱缠绕机行业调研报告 - 市场现状分析与发展前景预测
  19. google 招聘题
  20. 【wpf】Page的Unloaded事件

热门文章

  1. C# 读取word2003 并且显示在界面上的方法
  2. input file 上传问题
  3. 平衡搜索树之红黑树(图片格式)
  4. 深入理解linux网络技术内幕读书笔记(十)--帧的接收
  5. Clojure Web 开发 (一)
  6. Linux 增加swap空间大小
  7. Hadoop,Hbase伪集群安装步骤
  8. 从虚拟主机时代说起,详述Kubernetes带来的变革
  9. 汽车短视频大行其道,新能源汽车平台杉车网如何“领风骚”?
  10. WinSock API相关函数