Java Web 开发的核心组件是支撑 Web 应用运行、处理请求、实现业务逻辑的关键模块,涵盖从底层规范到上层业务分层的多个层面。这些组件相互配合,共同完成"接收请求→处理逻辑→生成响应"的完整流程。以下是核心组件的分类及详解:
一、Java EE 规范定义的核心组件(底层基础)
这些组件是 Java Web 开发的"官方标准",由 Java EE 规范定义,所有 Web 容器(如 Tomcat)都必须支持,是构建 Web 应用的基石。
1. Servlet(服务器小程序)
- 核心作用:处理客户端的 HTTP 请求(如 GET/POST),执行逻辑(如查询数据库、处理参数),并生成动态响应(如 JSON、HTML)。
- 地位 :Java Web 的"心脏",所有请求最终都会通过 Servlet 处理(即使是框架封装的场景,如 Spring MVC 的
DispatcherServlet本质也是 Servlet)。 - 示例 :自定义
UserServlet处理用户登录请求,解析用户名密码,验证后返回登录结果。
2. JSP(Java Server Pages)
- 核心作用:动态生成 HTML 页面,允许在 HTML 中嵌入 Java 代码(<% ... %>),简化视图层开发。
- 本质:JSP 最终会被 Web 容器编译为 Servlet(.java → .class),本质是 Servlet 的"视图友好型"变种。
- 场景:早期用于生成动态网页(如用户中心页面、商品详情页),现在逐渐被前后端分离的前端框架(Vue/React)替代,但仍是传统 Java Web 的核心视图组件。
3. Filter(过滤器)
- 核心作用:在请求到达 Servlet 之前或响应返回客户端之前,对请求/响应进行"拦截处理"(如权限校验、字符编码转换、日志记录)。
- 工作流程:请求 → Filter(拦截处理)→ Servlet(业务处理)→ Filter(拦截响应)→ 客户端。
- 示例 :
LoginFilter:拦截未登录用户的请求,跳转到登录页;EncodingFilter:统一设置请求/响应的字符编码为 UTF-8,解决中文乱码。
4. Listener(监听器)
- 核心作用:监听 Web 应用中的"事件"(如 Servlet 上下文初始化、Session 创建/销毁、属性变化),并触发相应处理逻辑。
- 常见事件类型 :
- 应用级事件(如 Web 应用启动/关闭);
- 会话级事件(如用户登录生成 Session、用户退出销毁 Session);
- 请求级事件(如请求对象创建/销毁)。
- 示例 :
AppListener:在 Web 应用启动时初始化数据库连接池;SessionListener:统计当前在线用户数量(Session 创建时+1,销毁时-1)。
二、业务分层核心组件(开发实践层)
在实际开发中,为了实现"高内聚、低耦合",通常会将代码按功能分层,这些分层组件是业务实现的核心。
1. JavaBean(数据载体)
- 核心作用:封装数据的简单 Java 类,通常用于存储请求参数、数据库查询结果等数据。
- 特点 :
- 类是公共的(public);
- 有默认无参构造方法;
- 属性私有化(private),通过 getter/setter 访问。
- 示例 :
User类封装用户信息(id、username、password),Order类封装订单信息(orderId、productName、price)。
2. DAO(Data Access Object,数据访问对象)
- 核心作用:专门负责与数据库交互,封装数据库操作(如增删改查),隔离业务逻辑与数据访问细节。
- 实现 :通常基于 JDBC、MyBatis、JPA 等技术,提供
getById()、save()、update()等方法。 - 示例 :
UserDao类提供login(String username, String password)方法,内部通过 JDBC 执行 SQL 查询用户是否存在。
3. Service(业务逻辑层)
- 核心作用:处理核心业务逻辑(如登录验证、订单生成、库存扣减),调用 DAO 层获取数据,协调多个 DAO 完成复杂业务。
- 特点:不直接操作数据库,而是通过 DAO 层间接操作;是事务管理的主要载体(如订单创建+库存扣减需要在同一个事务中)。
- 示例 :
OrderService的createOrder(Order order)方法,调用OrderDao.save(order)保存订单,同时调用StockDao.reduce(stockId, quantity)扣减库存。
4. Controller(控制器,MVC 模式核心)
- 核心作用:接收客户端请求,解析参数,调用 Service 层处理业务,最后决定返回什么响应(如跳转到哪个页面、返回什么 JSON 数据)。
- 地位:MVC(Model-View-Controller)模式的"调度中心",连接视图层(View)和模型层(Model,即 Service/DAO)。
- 示例 :Spring MVC 的
OrderController类,通过@PostMapping("/order")接收下单请求,调用orderService.createOrder(...),返回订单创建结果的 JSON。
三、运行环境核心组件
这些组件是 Web 应用的"运行容器"和"基础设施",确保上述所有组件能正常工作。
1. Web 容器(Servlet 容器)
- 核心作用:提供 Servlet、JSP、Filter、Listener 的运行环境,管理它们的生命周期(初始化、调用、销毁),并处理底层网络通信(如 HTTP 协议解析、Socket 连接)。
- 常见实现:Tomcat(最主流)、Jetty、JBoss、WebLogic 等。
2. 配置文件
- 核心作用:配置 Web 应用的基础信息(如 Servlet 映射、Filter 拦截规则、数据库连接参数),无需硬编码。
- 常见文件 :
web.xml:传统配置文件,定义 Servlet 映射、Filter、Listener 等;- 注解配置:现代开发中常用(如
@WebServlet、@WebFilter)替代web.xml; - 数据库配置文件(如
jdbc.properties):存储数据库 URL、用户名、密码。
总结
Java Web 开发的核心组件可分为三类:
- 底层规范组件(Servlet、JSP、Filter、Listener):定义请求处理、视图生成、拦截监听的标准;
- 业务分层组件(JavaBean、DAO、Service、Controller):实现数据封装、数据访问、业务逻辑、请求调度的分层设计;
- 运行环境组件(Web 容器、配置文件):提供运行基础和配置支持。
这些组件相互协作,从接收请求(Servlet/Controller)→ 处理逻辑(Service)→ 访问数据(DAO)→ 生成响应(JSP/JSON),构成完整的 Java Web 应用流程。