Skip to content

Java Web

Servlet、JSP、Cookie/Session、Filter — 经典 Java Web 全家桶。


Servlet

Servlet 生命周期

  1. 实例化:第一次请求时创建(或配置 load-on-startup 启动时创建)
  2. 初始化:调用 init() 方法
  3. 服务:调用 service() → 根据请求类型分发到 doGet()/doPost()
  4. 销毁:调用 destroy() 方法 单实例多线程:一个 Servlet 只有一个实例,多个请求共享

请求转发 vs 重定向

请求转发 (forward):

  • 服务器内部跳转,一次请求
  • 地址栏不变
  • 可以共享 request 域数据
  • 只能转发到当前应用的资源

重定向 (redirect):

  • 两次请求,第一次返回 302 + Location
  • 地址栏变为新 URL
  • 不共享 request 域数据
  • 可以重定向到外部资源

JSP

JSP 生命周期

翻译:.jsp → .java(Servlet 源码) 编译:.java → .class 初始化:jspInit() 服务:_jspService() 销毁:jspDestroy()

JSP 九大内置对象

request, response, session, application, out, page, pageContext, config, exception 四大域对象:page < request < session < application

客户端存储,每次请求自动携带 setMaxAge:设置有效期(秒) HttpOnly:防止 XSS 读取 Secure:仅 HTTPS 传输 Path / Domain:作用范围

Session

服务端存储,通过 JSESSIONID Cookie 关联 默认 30 分钟超时 session.invalidate() 手动销毁 适合存储敏感数据和大量数据

JSTL

核心标签库

<c:if> — 条件判断 <c:choose> / <c:when> / <c:otherwise> — 多条件分支 <c:forEach> — 循环遍历,varStatus 获取循环状态(index, count, first, last) <c:set> — 设置变量 <c:out> — 输出并转义 HTML

Filter 与 Listener

Filter(过滤器)

实现 javax.servlet.Filter 接口 在请求到达 Servlet 之前进行预处理 在响应返回客户端之前进行后处理 常见用途:编码过滤、登录校验、权限控制 执行顺序:按 web.xml 中的配置顺序或 @WebFilter 顺序

Listener(监听器)

ServletContextListener:应用启动/销毁 HttpSessionListener:Session 创建/销毁 ServletRequestListener:请求创建/销毁 常见用途:初始化资源、统计在线人数

XML 与 DOM4J

XML 基础

可扩展标记语言,用于数据存储和配置 语法:标签区分大小写、必须闭合、属性必须引号 CDATA 区段:<![CDATA[...]]> 避免解析特殊字符

DOM4J 解析

SAXReader 读取 XML 文件 Document → Element 树形结构 element.elementText("name") 获取子元素文本 XPath 支持:selectNodes() / selectSingleNode() Properties 配合使用:存储键值对配置

AI 应用开发 / Agent 开发实习生