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

Servlet 容器与过滤器 超详细讲解

目录

一、Servlet 容器(Servlet Container)

1. 是什么?

2. 核心作用(必须掌握)

3. Servlet 生命周期(容器全权控制)

4. 工作流程(HTTP 请求完整链路)

5. 总结一句话

二、过滤器(Filter)

1. 是什么?

2. 核心特点

3. 过滤器能做什么?(高频场景)

4. 过滤器工作原理

5. 过滤器生命周期

三、实战:写一个过滤器(最常用的 2 个案例)

环境

案例 1:统一编码过滤器(解决中文乱码)

案例 2:登录校验过滤器(未登录禁止访问)

四、Servlet 容器 + 过滤器 完整工作流程(终极总结图)

五、核心区别与关系(一句话秒懂)

总结


本文会用通俗易懂、层层递进的方式,把这两个 Java Web 核心概念讲透,从是什么、做什么、工作原理、使用场景到实战代码全覆盖,新手也能完全看懂。


一、Servlet 容器(Servlet Container)

1. 是什么?

Servlet 容器 = Web 服务器 + Servlet 运行环境它是一个专门负责管理、运行、销毁 Servlet的服务器程序,是 Java Web 程序的运行载体

常见的 Servlet 容器:

  • Tomcat(最主流、最常用)
  • Jetty
  • Undertow
  • WebLogic、WebSphere(企业级)

简单理解:没有 Servlet 容器,Servlet 代码就无法运行,就像手机没有操作系统,APP 无法运行一样。

2. 核心作用(必须掌握)

Servlet 容器干 4 件最关键的事:

  1. 接收 HTTP 请求浏览器发来请求,容器先接住,解析请求头、请求参数、Cookie 等。
  2. 找到对应的 Servlet根据 URL 匹配,找到你写的 Servlet 类。
  3. 管理 Servlet 生命周期负责创建、初始化、调用、销毁 Servlet(全程不用你手动 new 对象)。
  4. 返回 HTTP 响应把 Servlet 处理完的结果封装成 HTTP 响应,返回给浏览器。

3. Servlet 生命周期(容器全权控制)

容器严格按照这个流程管理 Servlet:

  1. 加载:第一次请求时加载类
  2. 实例化:容器创建 Servlet 对象(单例)
  3. 初始化:调用init()方法(只执行 1 次)
  4. 服务:调用service()→ 再分发给doGet()/doPost()(每次请求都执行)
  5. 销毁:服务器关闭时调用destroy()

4. 工作流程(HTTP 请求完整链路)

浏览器 → HTTP 请求 → Servlet 容器 → 解析请求 → 匹配 Servlet → 执行 Servlet 业务代码 → 生成响应 → 容器返回 HTTP 响应 → 浏览器

5. 总结一句话

Servlet 容器就是 Servlet 的 “管家”+“服务器”,负责接收请求、调度 Servlet、返回响应。


二、过滤器(Filter)

1. 是什么?

Filter = 请求 / 响应的 “拦截器”“门卫”“中间件”它可以在请求到达 Servlet 之前响应返回浏览器之前做统一处理。

http://www.jsqmd.com/news/859819/

相关文章:

  • 利用Taotoken模型广场为不同AI应用场景挑选最合适的模型
  • 2026中国AIGC产业峰会启幕,大咖共探AI Agent落地与大模型突破路径
  • 我从一个码农到技术总监的10年奋斗史
  • 不止于指路,智慧导览如何重构公共空间价值
  • Vue 常用组件库完全指南:PC端、移动端与可视化全场景覆盖
  • 知识竞赛实时排名算法:平分怎么处理?
  • 丹麦语语音合成总不“像真人”?揭秘ElevenLabs最新v3.2引擎中未公开的3个丹麦语重音标记开关,限前200名开发者速查
  • 被裁员后,我靠代码创业成功的故事
  • 【知识获取与分享社区项目 | 项目日记第 7 天】关注取关实现:following 主表 + Outbox 同事务
  • 历史遗留炮弹排查技术解析:广州红鹏JM1000方案
  • 站长日记:实测一款神仙工具,终于搞定了Bing和360的收录难题
  • Vue UI样式兼容性常见问题与解决方案
  • Nodejs后端服务接入Taotoken多模型API的实践教程
  • Turnitin AI 检测算法深度剖析与绕过技术可行性方案
  • 2605C++,C++继承类实现调试器
  • SleeperX:macOS系统级电源管理架构解析与深度集成方案
  • YOLOv8水稻病害识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置)
  • API调用延迟飙升300%?ElevenLabs潮州话合成性能瓶颈诊断,工程师连夜修复的4个关键配置
  • 存储巨头日赚近3亿,长鑫科技还要让A股等多久?
  • NOBOOK账号使用指南:付费后能否多人共用?
  • Wand-Enhancer终极指南:免费解锁WeMod专业版与远程控制功能
  • 数据主权驱动:即时通讯私有化成选型必选项
  • 大模型智能体 (LLM Agent) 从入门到实战:让大模型真正 “会做事“
  • Visual Studio Code 1.121 发布:新增 Mermaid 和 HTML 预览,优化终端工具
  • 如何为你的Python数据分析脚本注入多模型AI能力
  • 520,选ROG NUC 2026,把最好的爱送给自己,也送给TA!
  • SSH密钥不能直接访问phpMyAdmin:正确使用隧道方案
  • 3分钟快速上手:VoiceFixer语音修复工具终极指南
  • 如何用Wannakey免费恢复WannaCry加密文件?3步内存密钥恢复指南
  • Ladybug深度解析:建筑环境数据分析的Python利器