杰瑞科技汇

tomcat与java web

核心比喻:餐厅与厨师

为了让你有个直观的理解,我们可以把整个 Java Web 应用运行的过程比作一家餐厅:

tomcat与java web-图1
(图片来源网络,侵删)
  • Java Web 应用 (你的网站/项目):这家餐厅的菜谱和菜品,它定义了餐厅能提供什么服务(比如宫保鸡丁、麻婆豆腐)。
  • Java 代码 (Servlet, JSP 等)厨师,他们根据菜谱(代码)来制作具体的菜品(处理请求,生成响应)。
  • Web 服务器 (Tomcat)整个餐厅,它不仅仅是厨师,还负责:
    • 迎接客人:接收来自顾客(浏览器)的订单(HTTP 请求)。
    • 安排座位:为每个订单分配一个厨师(线程)来处理。
    • 厨房管理:提供厨房的设备和环境(JVM 运行时环境)。
    • 上菜:将厨师做好的菜品(HTTP 响应)端给顾客。
    • 其他服务:管理收银台、前台接待等(管理静态资源、配置等)。

  • Java Web 应用 是,是“做什么”。
  • Tomcat容器,是“怎么做”和“在哪里做”的平台。

没有餐厅,厨师就没地方工作,无法接待客人,同样,没有 Tomcat 这样的 Web 服务器,你的 Java Web 应用代码就无法运行,无法接收和处理来自互联网的请求。


技术定义与角色

现在我们从技术角度来定义它们。

什么是 Java Web?

Java Web 是一个广义的概念,它指的是使用 Java 技术来开发基于 Web 的应用程序,这类应用程序通常运行在服务器端,通过 HTTP 协议与客户端(通常是浏览器)进行交互。

tomcat与java web-图2
(图片来源网络,侵删)

Java Web 应用的核心组件包括:

  • Servlet (小服务程序):Java Web 的核心,它是一个 Java 类,用于接收和响应来自客户端的请求,你可以把它看作是一个专门处理 HTTP 请求的“工人”,当浏览器请求一个 URL 时,对应的 Servlet 就会被调用,执行业务逻辑(比如查询数据库),然后生成 HTML、JSON 或 XML 等内容,再返回给浏览器。
  • JSP (JavaServer Pages):一种技术,允许你在 HTML 页面中嵌入 Java 代码,JSP 页面最终会被 Tomcat 翻译成一个 Servlet 来执行,它主要用于视图层的展示,让前端和后端的逻辑分离。
  • Javabean (JavaBean):一种遵循特定规范的 Java 类,通常用于封装数据,在 Web 应用中,它常用来在 Servlet 和 JSP 之间传递数据,相当于一个“数据载体”。
  • Filter (过滤器):可以拦截请求和响应,进行一些预处理和后处理操作,字符编码转换、用户权限验证、日志记录等。
  • Listener (监听器):用于监听 Web 应用中某些重要事件的发生,比如应用启动、会话创建/销毁等,并执行相应的逻辑。

这些组件共同构成了 Java Web 应用的业务逻辑和表现层。

什么是 Tomcat?

Apache Tomcat 是一个开源的、轻量级的 Web 服务器和 Servlet 容器,它由 Apache 软件基金会维护。

Tomcat 的核心职责:

tomcat与java web-图3
(图片来源网络,侵删)
  1. 实现 Servlet 规范:Tomcat 完全实现了 Java EE 中的 Servlet 和 JSP 规范,这意味着你写的标准 Servlet 和 JSP 代码,Tomcat 能够理解并执行。
  2. 作为 Web 服务器:它能直接接收和处理来自客户端的 HTTP 请求,虽然 Tomcat 也处理静态资源(如 HTML、CSS、JS 图片),但它更擅长处理动态的 Java 内容,对于更高性能的静态文件服务,通常会搭配 Nginx 这样的服务器。
  3. 提供运行环境:Tomcat 本身就是一个 Java 应用,它内嵌了一个 Java 虚拟机,你只需要安装好 JDK,然后解压并运行 Tomcat,它就能为你提供一个独立的、可运行的 Java Web 应用环境。
  4. 管理应用生命周期:Tomcat 负责部署、启动、监控和停止你部署在它里面的 Web 应用(通常是一个 .war 文件)。

它们如何协同工作?

下面是一个典型的请求处理流程,展示了 Tomcat 和你的 Java Web 应用是如何协作的:

  1. 用户请求:你在浏览器中输入 http://localhost:8080/myapp/list,然后按回车。
  2. Tomcat 接收:Tomcat 在监听 8080 端口,它接收到这个 HTTP 请求。
  3. 匹配应用:Tomcat 根据 URL 中的 /myapp 部分,找到自己部署的一个名为 myapp 的 Web 应用。
  4. 匹配 Servlet:Tomcat 查看 myapp 的配置文件(web.xml 或使用注解),发现 URL /list 应该由名为 ProductListServlet 的 Servlet 来处理。
  5. 创建请求/响应对象:Tomcat 创建两个对象:HttpServletRequest(包含请求头、参数、Cookie 等信息)和 HttpServletResponse(用于构建响应内容)。
  6. 调用 Service 方法:Tomcat 创建一个 ProductListServlet 的实例(或从池中获取),并调用其 service() 方法,将上面创建的两个对象作为参数传入。
  7. 业务逻辑处理ProductListServlet 的代码开始执行,它可能会:
    • HttpServletRequest 中获取查询参数。
    • 调用业务逻辑层代码,该代码再访问数据库,获取商品列表。
    • 将商品列表数据存入一个 List<Product> 对象中。
    • 将这个列表存入 HttpServletRequest 的属性中,以便在页面上显示。
  8. 生成响应:Servlet 通常不会直接生成 HTML,它可能会将请求转发给一个 JSP 页面(如 productList.jsp),JSP 读取 HttpServletRequest 中的数据,生成最终的 HTML 内容。
  9. 返回响应:JSP 生成的 HTML 内容被写入 HttpServletResponse 对象,Servlet 执行完毕后,Tomcat 从 HttpServletResponse 中取出所有内容,通过 HTTP 协议将其发送回浏览器。
  10. 浏览器渲染:浏览器接收到 HTML 响应,将其渲染成用户看到的网页。

总结与对比

特性 Java Web Tomcat
本质 一个概念、一个技术体系,指用 Java 开发 Web 应用的方法和标准。 一个具体的软件产品,是实现 Java Web 技术的平台。
角色 开发者视角,开发者使用 Servlet、JSP 等技术来构建应用。 运维/部署视角,管理员将开发者构建的应用部署到 Tomcat 中运行。
关系 内容与容器,Java Web 应用是“内容”,Tomcat 是“容器”或“运行环境”。 实现者,Tomcat 实现了 Java Web 核心规范(Servlet/JSP),让这些技术得以运行。
范围 更广,除了 Tomcat,还有其他 Web 服务器/容器,如 Jetty, WebLogic, WebSphere 等。 具体,特指 Apache Tomcat 这一个软件。
选择 当你决定用 Java 做网站时,你就选择了 Java Web 技术栈。 当你需要一个轻量、开源、易于使用的服务器来运行你的 Java Web 应用时,Tomcat 是一个非常流行的选择。

  • 你用 Java Web 技术(Servlet/JSP)写代码,做出一个网站。
  • 你把写好的网站代码打包成一个 .war 文件。
  • 你把这个 .war 文件放到 Tomcatwebapps 目录下。
  • 启动 Tomcat,它就会自动加载并运行你的网站。

Tomcat 是 Java Web 开发中不可或缺的一环,是连接你的代码和互联网的桥梁。

分享:
扫描分享到社交APP
上一篇
下一篇