Servlet 是什么?
Servlet 是 Server Applet 的缩写,翻译过来就是“服务器端的小程序”。尽管被称作“小程序”,它的功能却一点也不小,因为 Servlet 是基于 Java 技术的,Java 能做的事情,Servlet 基本上都能做到。
举个例子,Servlet 可以用来处理 HTTP 请求、访问数据库、生成 HTML 页面等。也就是说,用 Servlet,你几乎可以用 Java 开发整个动态网站。
为什么需要 Servlet?
最开始,虽然 Java 很强大,但直接用原生 Java 写动态网站是件“折磨人”的事情。为什么?
- 你得自己解析 HTTP 请求报头。
- 自己分析用户的请求参数。
- 自己加载数据库组件。
这些基础性、重复性又麻烦的工作浪费了开发者的时间和精力。
为了解决这个问题,Java 官方推出了 Servlet 技术。它把开发动态网站所需的原生 Java 功能封装成了一套简单易用的 API,称为 Servlet API。
用 Servlet 开发网站就简单多了。开发者只需要关注业务逻辑,不再为基础功能的实现操心。
Servlet 的优势
- 强大:基于 Java,几乎能调用所有 Java API。
- 适用范围广:适合企业级开发,能处理高并发、大吞吐量的场景。
- 方便:封装了许多底层功能,大大简化开发流程。
简单来说,Servlet 就是 Sun 公司(现在的 Oracle)推出的一种基于 Java 的动态网站开发技术。只要按 Servlet 规范写代码,就能开发网站。
Servlet 是一种规范
严格意义上,Servlet 其实是 Java Web 开发的一种规范,也可以理解为一套技术标准。规范本身并不能“跑起来”,它只是说清楚了应该怎么做,需要有人去实现它。
比如,Servlet 规范提到了接口、方法、功能等,具体的代码实现交给了各种“Servlet 容器”去完成。
什么是 Servlet 容器?
Servlet 容器是专门用来管理 Servlet 程序的服务器,比如:
- Tomcat(最常见的开源 Servlet 容器)
- Weblogic、Jetty、Jboss、WebSphere 等
你可以理解为,Servlet 容器负责帮你运行 Servlet 类,让它们为网站服务。
Servlet 接口
所有 Servlet 的功能都通过一个名为 Servlet 的接口提供。想写一个 Servlet 程序,可以直接实现这个接口,比如:
public class ServletDemo implements Servlet {
// TODO: 实现接口方法
}
但直接实现 Servlet 接口会比较繁琐,需要写很多方法。为此,Servlet 规范还提供了两个常用的抽象类:
- GenericServlet 类
- HttpServlet 类
其中,HttpServlet 更加方便,所以大多数情况下我们直接继承 HttpServlet 来编写 Servlet 程序。
JSP:Servlet 的升级版
最初,Servlet 是 Java 的第一代 Web 开发技术,但它有个很大的缺点:需要把 HTML 代码写成字符串输出,非常麻烦。比如:
out.println("<html><body>这是HTML</body></html>");
为了解决这个问题,Java 又推出了第二代 Web 开发技术——JSP。JSP 可以直接在 HTML 文档中嵌入 Java 代码,大大提升了开发效率。
JSP 和 Servlet 的关系
- JSP 是基于 Servlet 的:访问 JSP 页面时,JSP 代码会被翻译成 Servlet,然后再执行。所以,最终 HTML 还是通过字符串输出的。
- JSP 更适合现代开发:JSP 更友好,让 HTML 和代码分离,维护起来更方便。
- Servlet 是 JSP 的基础:JSP 本质上就是对 Servlet 的进一步封装。
所以,尽管现在很少直接用 Servlet 开发动态网站,但理解 Servlet 对学习和使用 JSP 依然非常重要。
总结
- Servlet 是基于 Java 的动态网站开发技术。
- 它封装了许多底层功能,让开发者可以专注于业务逻辑。
- Servlet 是一种规范,需要依托 Servlet 容器运行,比如 Tomcat。
- JSP 是 Servlet 的升级版,用起来更简单,但本质上还是基于 Servlet。
学习 Servlet,不仅能让你理解 JSP 的运行原理,还能帮你夯实 Java Web 开发的基础!
最后说一句(求关注,求赞,别白嫖我)
最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。
这是大佬写的 7701页的BAT大佬写的刷题笔记,让我offer拿到手软
本文,已收录于,我的技术网站 cxykk.com:程序员编程资料站,有大厂完整面经,工作技术,架构师成长之路,等经验分享
求一键三连:点赞、分享、收藏
点赞对我真的非常重要!在线求赞,加个关注我会非常感激!