当前位置: 首页 > news >正文

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 应用流程。

http://www.dtcms.com/a/541389.html

相关文章:

  • 怎么做qq分享网站深圳中瑞建设集团官方网站
  • 20251028在荣品RD-RK3588-MID开发板的Android13系统下解决关机的时候最近打开的应用不关的问题
  • 网站建设功能套餐表怎样创建网站桌面快捷方式
  • 当 Claude Code 登陆浏览器:我们如何用 Gateone.ai 把“移动编码”从炫技变成生产力核弹
  • Labview多种通信集合
  • 炫酷文字制作网站网站建设最快多长时间
  • 【自然资源】宅地基误划为永久基本农田怎么办?
  • Python:批量下载已知gene symbol蛋白的PDB文件
  • 废旧台式机变身私有NAS
  • 探索Agent工具调用时的高熵时刻
  • c 转网站开发电脑培训网上培训班
  • 2022/07 JLPT听力原文 问题四
  • 互联网网站运营网站建设博客作业
  • 破解多数据库并存难题!电科金仓异构多活架构铸就安全底座
  • 网站在线解压小程序入口qq浏览器
  • 中国工程项目网站网站模版带后台
  • JavaWeb后端-MySQL
  • sherpa-onnx实现ASR(语音转文字)和 TTS(文字转语音)
  • 怎么进入国外网站一些有趣的网站
  • 树莓派 ADS1263 各种库程序
  • 基于NodeJs实现一个MCP客户端(会话模式和无会话模式)
  • 小迪安全v2023学习笔记(一百三十九讲)—— Linux系统权限提升篇Vulnhub辅助项目SUID权限SUDO指令版本漏洞
  • 《电子工程师基础篇:全面解析电容分类、核心MLCC与选型参数》
  • opencv学习笔记7:对mnist数据集分类
  • 房地产公司网站建设报价方案涂料网站模板
  • 深圳手机网站网站恶意点击
  • 网站优化搜索东莞企业网络推广运营技巧
  • 网站关键词怎么设置莲塘网站建设
  • 跨院区数据不通、停机风险高?浙人医靠电科金仓多活架构破信创难题
  • 免费网站建设优化做一个付费网站多少钱