第一部分:Java Web 技术详解
Java Web 技术是使用 Java 语言来构建运行在 Web 服务器上的应用程序的技术总称,它的核心思想是客户端/服务器架构,客户端通过浏览器发送请求,服务器上的 Java 应用程序处理请求并返回响应(通常是 HTML 页面)。

核心概念
1 HTTP 协议
Web 应用的基石,它是一种应用层协议,定义了客户端(浏览器)和服务器之间如何通信。
- 请求: 客户端向服务器发送数据,包含:
- 请求方法:
GET(获取数据),POST(提交数据),PUT(更新),DELETE(删除) 等。 - 请求路径:
/index.html,/api/users等。 - 请求头:
Host,User-Agent,Content-Type等,包含附加信息。 - 请求体: 对于
POST请求,通常包含提交的数据(如表单数据、JSON)。
- 请求方法:
- 响应: 服务器向客户端返回数据,包含:
- 状态码:
200 OK(成功),404 Not Found(资源不存在),500 Internal Server Error(服务器内部错误) 等。 - 响应头:
Content-Type(内容类型,如text/html,application/json),Content-Length(内容长度) 等。 - 响应体: 实际返回的内容,如 HTML 代码、JSON 数据、图片等。
- 状态码:
2 Servlet (服务器小程序)
Servlet 是 Java Web 技术的核心,它是一个运行在 Web 服务器端的 Java 类,用于接收和响应来自客户端的 HTTP 请求。
- 本质: 一个实现了
javax.servlet.Servlet接口的 Java 类。 - 生命周期:
- 加载和实例化: 服务器启动或第一次请求该 Servlet 时,加载并创建其实例。
- 初始化: 调用
init()方法,只执行一次,用于完成一些初始化工作(如加载配置、建立数据库连接池)。 - 请求处理: 每次客户端请求时,服务器会创建一个新的
ServletRequest和ServletResponse对象,然后调用该 Servlet 的service()方法。 - 销毁: 服务器关闭或应用被卸载时,调用
destroy()方法,释放资源。
- 工作流程:
- 浏览器发送一个 HTTP 请求到 Tomcat。
- Tomcat 解析请求,根据
web.xml配置或注解找到对应的 Servlet。 - Tomcat 调用 Servlet 的
service()方法,并将请求和响应对象作为参数传入。 - 在
service()方法(或更常用的doGet()/doPost()方法)中,开发者编写业务逻辑,处理请求,并生成响应内容。 - 写入
HttpServletResponse对象。 - Tomcat 将
HttpServletResponse对象转换成 HTTP 响应,发送回浏览器。
3 JSP (JavaServer Pages)
JSP 是一种用于创建动态网页的技术,它看起来像一个 HTML 文件,但其中可以嵌入 Java 代码。
- 本质: 一个 Servlet,当 JSP 文件第一次被访问时,Tomcat 会将其翻译成一个 Java Servlet 文件(
.java),然后编译成.class文件,之后就像处理普通 Servlet 一样处理它。 - 核心元素:
- HTML/XML 静态内容: 页面的骨架。
- JSP 脚本元素:
- 表达式:
<%= ... %>:用于输出 Java 表达式的结果到页面上。 - 脚本片段:
<% ... %>:可以编写多行 Java 代码。 - 声明:
<%! ... %>:用于声明成员变量或方法。
- 表达式:
- JSP 动作标签: 如
<jsp:include>,<jsp:forward>等。 - JSP 内置对象: 9 个预定义的变量,可以直接在 JSP 中使用,如
request,response,session,application,out等。
4 JSP 与 Servlet 的关系与分工
- Servlet 的优势: 逻辑处理能力强,性能高(因为是纯 Java 代码)。
- JSP 的优势: 页面表现能力强,便于美工设计(因为看起来像 HTML)。
- 经典 MVC 模式:
- Model (模型): JavaBean 或 POJO,封装数据和业务逻辑。
- View (视图): JSP 页面,负责数据显示和用户交互。
- Controller (控制器): Servlet,负责接收请求,调用 Model 处理业务逻辑,然后选择合适的 View 进行响应。
- 流程: 用户请求 -> Controller -> 处理请求,调用 Model -> 将数据存入 request -> 转发到 JSP -> JSP 展示数据。
5 Filter (过滤器) 和 Listener (监听器)
- Filter: 可以对请求进行拦截和预处理,也可以对响应进行后处理,常用于:
- 字符编码统一:
CharacterEncodingFilter。 - 权限验证: 检查用户是否登录。
- 日志记录: 记录请求信息。
- GZIP 压缩: 压缩响应内容。
- 字符编码统一:
- Listener: 用于监听 Web 应用中某些对象的创建、销毁或属性变化事件,常用于:
- ServletContextListener: 在 Web 应用启动和销毁时执行代码,常用于初始化数据库连接池、加载全局配置等。
第二部分:Tomcat 详解
Tomcat 是一个开源的、轻量级的 Web 应用服务器,也被称为 Catalina,它实现了 Java EE 中的 Servlet 和 JSP 规范,因此是运行 Java Web 应用的理想容器。

Tomcat 的核心架构
理解 Tomcat 的架构是掌握其精髓的关键,Tomcat 的核心组件是分层的,每个组件都有明确的职责。
- Server (服务器): 代表整个 Tomcat 实例,一个 Server 可以包含一个或多个 Service。
- Service (服务): 将一个或多个 Connector 与一个 Engine 关联起来,它将连接器(接收请求)和引擎(处理请求)组合在一起。
- Connector (连接器): 负责接收和返回 HTTP 请求/响应,它是 Tomcat 与外部世界(如浏览器)交互的窗口,Tomcat 支持多种连接器,最常见的是 HTTP/1.1 连接器和 AJP 连接器(用于与 Apache/Nginx 等 Web 服务器集成)。
- Engine (引擎): 处理 Service 中所有 Connector 接收到的请求,它是 Tomcat 的核心请求处理引擎,负责将请求传递给合适的 Host。
- Host (虚拟主机): 代表一个虚拟主机,可以部署一个或多个 Web 应用。
www.example.com和api.example.com可以是两个不同的 Host。 - Context (上下文): 代表一个 Web 应用,当你在
webapps目录下放一个 WAR 包或一个文件夹时,Tomcat 就会为其创建一个 Context,Context 包含了该应用的所有 Servlet、JSP、静态资源和配置。 - Wrapper (包装器): 代表一个 Servlet,它负责管理单个 Servlet 的生命周期(加载、初始化、调用、销毁)。
请求流程简述:
- 浏览器通过 HTTP 协议向 Tomcat 的 Connector 发送请求。
- Connector 将请求交给关联的 Engine。
- Engine 根据
Host头(如Host: www.example.com)将请求交给对应的 Host。 - Host 根据 URL 路径(如
/myapp/index.jsp)将请求交给对应的 Context (/myapp)。 - Context 根据 URL 路径(如
/index.jsp)找到对应的 Wrapper (即处理该请求的 Servlet)。 - Wrapper 调用 Servlet 实例的
service()方法处理请求。 - 响应沿着相反的路径返回给浏览器。
部署 Java Web 应用到 Tomcat
最简单的方式是部署 WAR 包。
- 打包: 使用 Maven 或 Gradle 等构建工具,将你的 Java Web 项目(包含
src/main/webapp目录和src/main/java的代码)打包成一个.war文件。 - 部署: 将生成的
.war文件

