这节来说个大家都比较熟悉的东西, 就是 servlet 三大组件, servlet,filter,listener, 再说说 springboot 的内置 tomcat.
也许还会说一下 tomcat 的运行原理, 还有, springboot 不是不支持 jsp 吗 (是因为嵌入式 tomcat 的原因), 那我就让 springboot 支持 jsp, 其他的还是一样.
比较长, 可能要分为两节.
1.servlet 配置
想必大家不会陌生 servlet 配置, 写个类继承 HttpServlet, 然后在原来的 web.xml 文件中配置 < servlet-name><servlet-class > 还有配置 servlet 的映射路径 < servlet-mapping>, 忘记的小伙伴就回头看看啊.
现在的 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.
来源: http://www.bubuko.com/infodetail-2848905.html