Servlet 是个古老的东西(好吧能在校园课堂教的大部分都是古老的),因为浏览一个旧project源码的缘故,又重新搜了下 Servlet 的知识,这里做个信息记录。
当前 Java 的 web 服务器
web服务器是http服务器的升级版,除了基本的 tcp 管理、http request/response 解析/处理外,还有附加功能,例如路由功能、session功能,现在web服务器还会提供https、websocket服务。
web框架就是基于web服务器,提供一套非常简单好用的api来方便你开发/维护web应用。
当然web服务器/框架很多,不止java系的,javascript 的 node.js、express,python 的 flask、django,它们都是很受欢迎的框架,看下 stars
说回Java的web服务器,在我目前的认知里,主要分为两类
-
Servlet Container
Tomcat、Jettry、Undertow
-
Based Netty
Spring WebFlux、Vert.X、Helidon、Micronaut
顺带一提,,目前Java框架/生态的发展方向是 microservice、native;对于开发者的体验来说是,开发更快了/乐,代码更现代化/优雅,package体积更小。
Servlet 各版本介绍
-
Jakarta Servlet 5.0 - Jakarta
⬆ 这里更看到最新最全最官方的信息
-
Servlet 4.0 入门 - IBM
Servlet 4.0 的主要新功能为服务器推送和全新 API,该 API 可在运行时发现 servlet 的 URL 映射。
-
Servlet 3.0 新特性详解 - IBM
Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布
- 异步处理支持:有了该特性,Servlet 线程不再需要一直阻塞,直到业务处理完毕才能再输出响应,最后才结束该 Servlet 线程。在接收到请求之后,Servlet 线程可以将耗时的操作委派给另一个线程来完成,自己在不生成响应的情况下返回至容器。针对业务处理较耗时的情况,这将大大减少服务器资源的占用,并且提高并发处理速度。
- 新增的注解支持:该版本新增了若干注解,用于简化 Servlet、过滤器(Filter)和监听器(Listener)的声明,这使得 web.xml 部署描述文件从该版本开始不再是必选的了。
- 可插性支持:熟悉 Struts2 的开发者一定会对其通过插件的方式与包括 Spring 在内的各种常用框架的整合特性记忆犹新。将相应的插件封装成 JAR 包并放在类路径下,Struts2 运行时便能自动加载这些插件。现在 Servlet 3.0 提供了类似的特性,开发者可以通过插件的方式很方便的扩充已有 Web 应用的功能,而不需要修改原有的应用。