Java Web 开发的核心组件:Servlet, JSP,Filter,Listener

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 层间接操作;是事务管理的主要载体(如订单创建+库存扣减需要在同一个事务中)。
  • 示例OrderServicecreateOrder(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 应用流程。

相关推荐
侠客行03171 天前
Mybatis连接池实现及池化模式
java·mybatis·源码阅读
蛇皮划水怪1 天前
深入浅出LangChain4J
java·langchain·llm
子兮曰1 天前
OpenClaw入门:从零开始搭建你的私有化AI助手
前端·架构·github
吴仰晖1 天前
使用github copliot chat的源码学习之Chromium Compositor
前端
1024小神1 天前
github发布pages的几种状态记录
前端
老毛肚1 天前
MyBatis体系结构与工作原理 上篇
java·mybatis
风流倜傥唐伯虎1 天前
Spring Boot Jar包生产级启停脚本
java·运维·spring boot
不像程序员的程序媛1 天前
Nginx日志切分
服务器·前端·nginx
Yvonne爱编码1 天前
JAVA数据结构 DAY6-栈和队列
java·开发语言·数据结构·python
Re.不晚1 天前
JAVA进阶之路——无奖问答挑战1
java·开发语言